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

Общий форум

To xyz: I'm really sorry, but could you find another test case? 0909 is working. Here's my new code
Послано Michael_Rybak 20 дек 2001 23:17
Program Subnumber;
Const MaxLen=300;
Var mt,dt:Array[0..100] Of Byte;
    st:Array[0..9,0..9] Of Byte;
Type TNum=Array[0..MaxLen] Of Byte;{0-sign of the number}
Procedure Add(A,B:TNum;Var C:TNum);   Forward;          {Сложение}
Procedure Sub(A,B:TNum;Var C:TNum);   Forward;
Procedure Mul10(Pow:Integer;Var X:TNum); Forward;          {Умножение
на 10 в степени}
Procedure Mulm10(Pow:Integer;Var X:TNum);Forward;
Procedure Mul(A,B:TNum;Var C:TNum);   Forward;          {Умножение}
Procedure MulC(A:TNum;C:Integer;Var B:TNum);Forward;       {Умножение
числа на цифру}
Procedure InputLong(Var X:TNum);      Forward;          {Ввод}
Procedure PrintLong(Var X:TNum);      Forward;          {Вывод}
Function Len(X:TNum):Integer;         Forward;          {Определение
длины}
Function CmpEqLns(A,B:TNum):Char;     Forward;          {Сравненме
чисел одной длины}
Function Cmp(A,B:TNum):Char;          Forward;          {Сравнение
чисел}
Procedure Dvd(A,B:TNum;Var C:TNum);   Forward;
Procedure InToTNum(K:Integer;Var R:TNum); Forward;
Procedure StToTNum(S:String;Var R:TNum);  Forward;
 Function Max(X,Y:Integer):Integer;
 Begin
  If X>Y Then Max:=X Else Max:=Y;
 End;
 Procedure Add;
  Var I,D,v                     :Integer;
 Begin
  D:=0;
  For I:=MaxLen DownTo 1 Do Begin
   v:=st[A[I],B[I]]+D;
   C[I]:=mt[v];
   D:=dt[v];
  End;
 End;
 Procedure Mul10;
  Var I:Integer;
 Begin
  For I:=1 To MaxLen-Pow Do
   X[I]:=X[I+Pow];
  For I:=MaxLen+1-Pow To MaxLen Do
   X[I]:=0;
 End;
 Procedure Mulm10;
  Var I:Integer;
 Begin
  For I:=MaxLen DownTo Pow+1 Do
   X[I]:=X[I-Pow];
  For I:=1 To Pow Do
   X[I]:=0;
 End;
 Procedure Mul;
  Var I,J,D                  :Integer;
      T                      :TNum;
 Begin
  For I:=1 To MaxLen Do C[I]:=0;
  For I:=MaxLen DownTo MaxLen+1-Len(B) Do Begin
   For J:=1 To MaxLen Do T[J]:=0;
   D:=0;
   For J:=MaxLen DownTo 1 Do Begin
    T[J]:=(A[J]*B[I]+D) Mod 10;
    D:=(A[J]*B[I]+D) Div 10;
   End;
   Mul10(MaxLen-I,T);
   Add(T,C,C);
  End;
 End;
 Procedure MulC;
  Var i,j,d:Integer;
      t:TNum;
 Begin
  For I:=1 To MaxLen Do B[I]:=0;
  For J:=1 To MaxLen Do T[J]:=0;
  D:=0;
  For J:=MaxLen DownTo MaxLen-Len(A) Do Begin
   T[J]:=(A[J]*C+D) Mod 10;
   D:=(A[J]*C+D) Div 10;
  End;
  Add(T,B,B);
 End;
 Procedure InputLong;
  Var I                      :Integer;
      S                      :String;
      Cod                    :Integer;
 Begin
  Readln(S);
  If S[1]='-' Then Begin
   X[0]:=1;
   Delete(S,1,1);
  End;
  For I:=1 To Length(S) Do Val(S[I],X[MaxLen-Length(S)+I],Cod);
 End;
 Procedure PrintLong;
  Var I                      :Integer;
 Begin
  If Len(X)=0 Then
   Write(0)
  Else
   For I:=MaxLen+1-Len(X) To MaxLen Do
    Writ