diff options
author | Raphael McSinyx <vn.mcsinyx@gmail.com> | 2017-03-14 10:23:43 +0700 |
---|---|---|
committer | Raphael McSinyx <vn.mcsinyx@gmail.com> | 2017-03-14 10:23:43 +0700 |
commit | 69a50f40bea8f04c2d2b1715dad5ea8c7d6ef507 (patch) | |
tree | f51905a868a94fa6eac79f5a6d6ec5aceb139f42 /daily/305easy/permbase.pas | |
parent | 2468c60b00b200b24a383ecc0fdc5d3cf8721b9f (diff) | |
download | cp-69a50f40bea8f04c2d2b1715dad5ea8c7d6ef507.tar.gz |
Add /r/dailyprogrammer Challenge #305
Diffstat (limited to 'daily/305easy/permbase.pas')
-rw-r--r-- | daily/305easy/permbase.pas | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/daily/305easy/permbase.pas b/daily/305easy/permbase.pas new file mode 100644 index 0000000..5513a77 --- /dev/null +++ b/daily/305easy/permbase.pas @@ -0,0 +1,50 @@ +uses math, strutils, sysutils; + +var + inv: string; + b: byte; + n: string; + + +function permbase( + base: byte; + index: longint +): string; + + var + i: byte = 1; + + begin + while base ** i <= index do + begin + index := index - base ** i; + inc(i) + end; + permbase := dec2numb(index, i, base) + end; + + +function invpermbase( + base: byte; + value: string +): longint; + + begin + invpermbase := (base ** length(value) - base) div (base - 1) + + numb2dec(value, base) + end; + +begin + (* + * Input format: + * <invert?> + * <base> <value> + *) + readln(inv); + readln(b, n); + n := delspace(n); + if strtobool(inv) then + writeln(invpermbase(b, n)) + else + writeln(permbase(b, strtoint(n))) +end. |