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

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

Why am I wrong???
Послано Zhu Chenguang 28 июн 2002 15:48
Here's my program.
I use greedy method.

Program ural_1014;
Const
    Infile
        ='';
    Outfile
        ='';
Type
    Tproduct
    =array[2..9]of longint;
    Tnum
    =array[2..9]of longint;
Var
    n
            :longint;
    fj
        :Tproduct;
    q
        :Tnum;

Procedure init;
var
    i,j
            :longint;
begin
    assign(input,Infile); reset(input);
     read(n);
    close(input);
    if n=0
     then begin
              assign(output,Outfile); rewrite(output);
               writeln(10);
              close(output);
              halt;
          end;
    for i:=2 to 9 do
     begin
         fj[i]:=0;
         while n mod i=0 do
          begin
              inc(fj[i]);
              n:=n div i;
          end;
     end;
    if n>1
     then begin
              assign(output,Outfile); rewrite(output);
               writeln('?');
              close(output);
              halt;
          end;
end;

Procedure work;
var
    i
                :longint;
begin
    for i:=2 to 9 do
     q[i]:=0;
    while (fj[3]>=2) do
     begin
         inc(q[9]);
         dec(fj[3],2);
     end;
    while (fj[2]>=3) do
     begin
         inc(q[8]);
         dec(fj[2],3);
     end;
    while (fj[7]>=1) do
     begin
         inc(q[7]);
         dec(fj[7],1);
     end;
    while (fj[2]>=1)and(fj[3]>=1) do
     begin
         inc(q[6]);
         dec(fj[2],1);
         dec(fj[3],1);
     end;
    while (fj[5]>=1) do
     begin
         inc(q[5]);
         dec(fj[5],1);
     end;
    while (fj[2]>=2) do
     begin
         inc(q[4]);
         dec(fj[2],2);
     end;
    while (fj[3]>=1) do
     begin
         inc(q[3]);
         dec(fj[3],1);
     end;
    while (fj[2]>=1) do
     begin
         inc(q[2]);
         dec(fj[2],1);
     end;
end;

Procedure out;
var
    i,j
                :longint;
begin
     assign(output,Outfile); rewrite(output);
      for i:=2 to 9 do
       for j:=1 to q[i] do
        write(i);
      writeln;
     close(output);
end;

Begin
    init;
    work;
    out;
End.