Advertisement
Guest User

Какая сс

a guest
Jan 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.78 KB | None | 0 0
  1. uses
  2.    SysUtils;
  3.  
  4. function ToTen(Number: String; System: Integer): Integer;
  5. const
  6.    Convert = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  7. var
  8.    i, Coef, Temp, Answer: Integer;
  9. begin
  10.    Coef := 1;
  11.    Answer := 0;
  12.    for i := Length(Number) downto 1 do
  13.    begin
  14.       Temp := Pos(Number[i], Convert) - 1;
  15.       Answer := Answer + Temp * Coef;
  16.       Coef := Coef * System;
  17.    end;
  18.    ToTen := Answer;
  19. end;
  20.  
  21. function FindMinimum(Number: String): Integer;
  22. const
  23.    Convert = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  24. var
  25.    Max, i: Integer;
  26. begin
  27.    Max := Pos(Number[1], Convert) - 1;
  28.    for i := 2 to Length(Number) do
  29.       if Pos(Number[i], Convert) - 1 > Max then
  30.          Max := Pos(Number[i], Convert) - 1;
  31.    FindMinimum := Max + 1;
  32. end;
  33.  
  34. var
  35.    Str, X, Y: string;
  36.    MinX, MinY, TenX, TenY, SystemX, SystemY, i, j, k: Integer;
  37.    IsEqual: Boolean;
  38. begin
  39.    Readln(Str);
  40.    Str := Trim(Str);
  41.    k := 1;
  42.    while Str[k] <> ' ' do
  43.    begin
  44.       X := X + Str[k];
  45.       inc(k);
  46.    end;
  47.    k := Length(str);
  48.    while str[k] <> ' ' do
  49.    begin
  50.       Y := str[k] + Y;
  51.       Dec(k);
  52.    end;
  53.    MinX := FindMinimum(X);
  54.    MinY := FindMinimum(Y);
  55.    IsEqual := False;
  56.    for i := MinX to 36 do
  57.    begin
  58.       TenX := ToTen(X, i);
  59.       for j := MinY to 36 do
  60.       begin
  61.          TenY := ToTen(Y, j);
  62.          if (TenY = TenX) and (i <> j) then
  63.          begin
  64.             IsEqual := True;
  65.             SystemX := i;
  66.             SystemY := j;
  67.          end;
  68.          if IsEqual then
  69.             break;
  70.       end;
  71.       if IsEqual then
  72.          break;
  73.    end;
  74.    if IsEqual then
  75.       Writeln(Format('%s (base %d) = %s (base %d)',[X, SystemX, Y, SystemY]))
  76.    else
  77.       Writeln(Format('%s is not equal to %s in any base 2..36',[X, Y]));
  78.    Readln;
  79. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement