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

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

I have got WA on test 4, but I have prety good algorithm
Послано Levani Kasradze 5 сен 2004 21:35
var a: array[1..32] of Integer;
    n: Longint;
    i, j, sign, temp: Integer;
    flag: Boolean;

label fin;

begin
  Readln(n);

  sign := 0;
  flag := True;

  while (n >= 10) and (flag) do
  begin
    flag := False;

    for i:=9 downto 2 do
      if (n mod i = 0) then
      begin
        flag := True;
        Inc(sign);
        a[sign] := i;
        n := n div i;
        break;
      end;

  end;{While}

  if (n = 0) then
  begin
    writeln('-1');
    goto fin;
  end;

  if (n div 10 >= 1) then
  begin
    writeln('-1');
    goto fin;
  end;


  Inc(sign);
  a[sign]:= n;

  for i:=1 to sign-1 do
    for j:=i+1 to sign do
      if a[i]>a[j] then
      begin
        temp := a[i];
        a[i] := a[j];
        a[j] := temp;
      end;

  for i:=1 to sign do
    write(a[i]);

 writeln;

fin:

end.

Re: I have got WA on test 4, but I have prety good algorithm
Послано Alatau [kaz] 8 сен 2004 20:06
After readln(n);
You have to check n = 0 & n = 1:
- in first case you must output 10 (1 * 0 = 0),
- in second case you must output 1 (1 = 1).
In this cases after output you'll go to fin.

Good Luck.