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

Обсуждение задачи 1036. Счастливые билеты

Why Compilation Error?
Послано Evgeny 5 янв 2003 16:37
program luckytickets;
var
  cur,nxt: array[0..1000,1..101] of byte;
  i,j,k,n,m,p: longint;
  res,buf : array[1..101] of byte;
procedure printing;
var i: integer;
fl: boolean;
begin
  fl := false;
  for i := 100 downto 1 do begin
    if res[i] <> 0 then fl := true;
    if fl then write(res[i]);
  end;
  if not fl then write('0');
  writeln;
end;
procedure summa(m,n: integer);
var i: integer;
begin
  fillchar(nxt[m],sizeof(nxt[m]),0);
  for i := 1 to 50 do begin
    nxt[m][i+1] := (nxt[m][i]+buf[i]+cur[n][i]) div 10;
    nxt[m][i] := (nxt[m][i]+buf[i]+cur[n][i]) mod 10;
  end;
end;
procedure Kvadrat(k : integer);
var i,j: integer;
begin
  for i := 1 to 50 do begin
    fillchar(buf,sizeof(buf),0);
    for j := 1 to 50 do begin
      buf[i+j] := buf[i+j] + cur[k][i]*cur[k][j] div 10;
      buf[i+j-1] := buf[i+j-1] + cur[k][i]*cur[k][j] mod 10;
    end;
    for j := 1 to 99 do begin
      res[j+1] :=res[j+1] + (res[j] + buf[j]) div 10;
      res[j] := (res[j] + buf[j]) mod 10;
    end;
  end;
end;
begin
  readln(n,k);
  if k mod 2 <> 0 then begin
    writeln('0');
    halt;
  end;
  k := k div 2;
  for i := 0 to 9 do begin
    cur[i][1] := 1;
  end;
  for i := 1 to n-1 do begin
    fillchar(nxt,sizeof(nxt),0);
    for p := 0 to 460 do begin
      for j := 0 to 9 do begin
        buf := nxt[p+j];
        summa(p+j,p);
      end;
    end;
    cur := nxt;
  end;
  Kvadrat(k);
  printing;
end.
Re: Why Compilation Error?
Послано misha 14 янв 2003 10:13
Actually, I do not know! I won't tell you "Nu i nakatal". You told me
you solved it!!!