ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1071. Никифор 2

program p1071;
var x,y,z,s,i:longint;
    out:boolean;
procedure check(p:longint);
var  x1,y1:longint;
     c:array[0..10000] of integer;
begin
     fillchar(c,sizeof(c),0);
     x1:=x;y1:=y;
     repeat
           inc(c[x1 mod p]);
           x1:=x1 div p;
     until x1=0;
     repeat
           if c[y1 mod p]>0 then dec(c[y1 mod p])
                            else exit;
           y1:=y1 div p;
     until y1=0;
     out:=true;
end;
begin
     readln(x,y);z:=0;out:=false;
     for i:=2 to x do
         if x mod i=y mod i then
         begin
              check(i);
              if out then break;
         end;
     if out then writeln(i)
            else writeln('No solution');
     readln;
end.