Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program zad_b;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- var
- i, j, ii, jj, p, cop, b10, k: integer;
- a, b, answer, q: string;
- procedure chswap(var a, b: char);
- var
- x: char;
- begin
- x := a;
- a := b;
- b := x;
- end;
- function reverse(s: string): string;
- var
- i: integer;
- begin
- for i := 1 to length(s) div 2 do
- chswap(s[i], s[length(s) - i + 1]);
- reverse := s;
- end;
- function translateb(n, i: integer): string;
- var
- m, k, cnt: integer;
- s: string;
- begin
- s := '';
- while (n <> 0) do
- begin
- s := s + inttostr(n mod i);
- n := n div i;
- end;
- s := reverse(s);
- result := s;
- end;
- function to10(s: string; ii: integer): int64;
- var
- i, j, k: integer;
- ans: int64;
- begin
- k := 0;
- ans := 0;
- for i := length(s) downto 1 do
- begin
- ans := ans + strtoint(s[i]) * trunc(exp(ln(ii) * k));
- inc(k);
- end;
- to10 := ans;
- end;
- begin
- q := '';
- readln(ii, jj);
- readln(a);
- b := (translateb(jj, ii));
- b10 := to10(b, ii);
- answer := '';
- i := 1;
- while (to10(a, ii) >= b10) do
- begin
- while (i <= length(a)) and (length(a) > 1) do
- begin
- cop := to10(copy(a, 1, i), ii);
- //writeln('cop = ', cop,' b10 = ', b10, ' ', to10(a, ii));
- if (cop >= b10) then
- begin
- p := to10(copy(a, 1, i), ii);
- answer := answer + translateb(p div jj, jj);
- if (a <> '') then
- delete(a, 1, i);
- i := 1;
- a := translateb(p mod jj, ii) + a;
- end
- else
- inc(i);
- end;
- q := a + q;
- a := answer;
- answer := '';
- i := 1;
- if (to10(a, ii) < b10) then
- break;
- end;
- if (a <> '') then
- q := a + q;
- writeln(q);
- readln;readln;readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment