program kokia_skaiciavimo_sistema;
  { 58 u‘davinys }

  type skaitmuo = 0..9;

  function did_skaitmuo (sk : integer) : skaitmuo;
   { did‘iausio skaitmens nustatymas }
   var max : skaitmuo;
  begin
    max := 0;
    repeat
      if sk mod 10 > max
         then max := sk mod 10;
      sk := sk div 10
    until sk = 0;
    did_skaitmuo := max
  end;

  function sk_suma (sk : integer) : integer;
    { randama skai‡iaus sk skaitmen— suma }
    var suma : integer;
  begin
    suma := 0;
    repeat
      suma := suma + sk mod 10;
      sk := sk div 10
    until sk = 0;
    sk_suma := suma
  end;

  function desimtainis (sk, x : integer) : integer;
   { skai‡ius sk, kurio sistemos pagrindas x, u‘ražomas dežimtainiu }
     var des, laip : integer;
  begin
    des := 0;
    laip := 1;   { sistemos pagrindo laipsni— rodikliai }
    repeat
      des := des + sk mod 10 * laip;
      laip := laip * x;
      sk := sk div 10
    until sk = 0;
    desimtainis := + des
  end;

  function sk_sistema (a, s : integer) : integer;
    { s > 0, a >= s }
    { randamas skai‡iavimo sistemos pagrindas; jei nulis - }
    { tokios skai‡iavimo sistemos nerasta }

    var m1, m2 : skaitmuo;
        x,     { sistemos pagrindas }
        d, suma : integer;
  begin { sk_sistema }
    { randame ma‘iausi… galim… skai‡iavimo sistem… }
    m1 := did_skaitmuo (s);
    m2 := did_skaitmuo (a);
    if m1 > m2
       then x := m1 + 1
       else x := m2 + 1;
    { randame skai‡iaus a skaitmen— sum… }
    suma := sk_suma(a);
    { skai‡i— s u‘ažyt… sistema x paver‡iame dežimtainiu }
    d := desimtainis (s, x);
    if s >= 10
       then while d < suma do
              begin
                x := x + 1;
                d := desimtainis (s, x)
              end;
    if d = suma
      then sk_sistema := x
      else sk_sistema := 0
  end;

  var a, s : integer;
begin
  writeln ('­veskite skai‡ius a ir s: ');
  readln (a, s);
  writeln (sk_sistema(a, s));
end.



