Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses
- SysUtils;
- function ToTen(Number: String; System: Integer): Integer;
- const
- Convert = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var
- i, Coef, Temp, Answer: Integer;
- begin
- Coef := 1;
- Answer := 0;
- for i := Length(Number) downto 1 do
- begin
- Temp := Pos(Number[i], Convert) - 1;
- Answer := Answer + Temp * Coef;
- Coef := Coef * System;
- end;
- ToTen := Answer;
- end;
- function FindMinimum(Number: String): Integer;
- const
- Convert = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var
- Max, i: Integer;
- begin
- Max := Pos(Number[1], Convert) - 1;
- for i := 2 to Length(Number) do
- if Pos(Number[i], Convert) - 1 > Max then
- Max := Pos(Number[i], Convert) - 1;
- FindMinimum := Max + 1;
- end;
- var
- Str, X, Y: string;
- MinX, MinY, TenX, TenY, SystemX, SystemY, i, j, k: Integer;
- IsEqual: Boolean;
- begin
- Readln(Str);
- Str := Trim(Str);
- k := 1;
- while Str[k] <> ' ' do
- begin
- X := X + Str[k];
- inc(k);
- end;
- k := Length(str);
- while str[k] <> ' ' do
- begin
- Y := str[k] + Y;
- Dec(k);
- end;
- MinX := FindMinimum(X);
- MinY := FindMinimum(Y);
- IsEqual := False;
- for i := MinX to 36 do
- begin
- TenX := ToTen(X, i);
- for j := MinY to 36 do
- begin
- TenY := ToTen(Y, j);
- if (TenY = TenX) and (i <> j) then
- begin
- IsEqual := True;
- SystemX := i;
- SystemY := j;
- end;
- if IsEqual then
- break;
- end;
- if IsEqual then
- break;
- end;
- if IsEqual then
- Writeln(Format('%s (base %d) = %s (base %d)',[X, SystemX, Y, SystemY]))
- else
- Writeln(Format('%s is not equal to %s in any base 2..36',[X, Y]));
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement