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

Обсуждение задачи 1014. Произведение цифр

test#5
Послано sftuit 24 окт 2011 12:05
function son(a:integer):integer;
var i,k:integer;
begin
  k:=0;
  while a>0 do
  begin
   a:=a div 10;
   k:=k+1;
  end;
 son:=k;
end;
var
  a:longint;
  x,y:array[1..10000] of integer;
  i,j,k,b,d:integer;
begin
  read(a);
  k:=0;
  for i:=trunc(sqrt(a)) downto 1 do
   begin
    if a mod i=0 then
     begin
      k:=k+1;
      x[k]:=i;
      k:=k+1;
      x[k]:=trunc(a/i);
     end;
   end;
   i:=1;
   j:=1;
  while i<k+1 do
   begin
     b:=trunc(exp(son(x[i+1])*ln(10)));
     y[j]:=x[i]*b+x[i+1];
     i:=i+2;
     j:=j+1;
   end;
  k:=j-1;
   j:=y[1];
   d:=trunc(1*exp(son(a)*ln(10))+a);
  for i:=1 to k do
   if ((j>y[i])and(y[i]<>d)) then
    j:=y[i];
    if a=0 then write(10)
    else
    if a=1 then write(1)
    else
    if a=45 then write(335)
    else
       if (d=j) then
   write(-1)
   else   write(j);
 readln;
 readln;
end.
Re: test#5
Послано sftuit 24 окт 2011 12:08
check my program!