Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2006-10-29 10:44:13

SjMaster
Новий користувач
Зареєстрований: 2006-10-24
Повідомлень: 2

Задача Dictionary

Вот мой код
program v5;

var n,i,j,p,l:byte;
    k:Longint;
    a:array[1..11]of Longint;
    b,c:array[1..12]of byte;


procedure fill_ab(n:byte);
var f:Longint;
    i:byte;
begin
  f:=1;
  b[n]:=n;
  for i:=1 to n-1 do begin
    f:=f*i;
    a[i]:=f;
    b[i]:=i;
  end;
end;

begin
  Readln(n,k);
  fill_ab(n);
  p:=n;
  for i:=1 to n do begin
    for j:=1 to p do begin
      if (k<=(j*a[p-1]))then begin
        c[i]:=b[j];
        for l:=j to p do b[l]:=b[l+1];
        k:=k-(j-1)*a[p-1];
        p:=p-1;
        break;
      end;
    end;
  end;
  for i:=1 to n do write(char(96+c[i]));
end.

За задачу 0 баллов, мои етсты проходят для любых значений  n,k.

Відредаговано SjMaster (2006-10-29 10:44:40)

Поза форумом

 

#2 2006-10-29 11:45:34

xbit
Новий користувач
Зареєстрований: 2006-10-05
Повідомлень: 16

Re: Задача Dictionary

поставь  {$I+,Q+,R+,S-}, и убедись еще раз, работает твоя программа или нет.
* if (k<=(j*a[p-1]))then begin
Вот в этой строчке твоя программа вылетает с range check, т.к. p = 1.

Відредаговано xbit (2006-10-29 11:52:02)

Поза форумом

 

#3 2006-10-29 12:32:08

SjMaster
Новий користувач
Зареєстрований: 2006-10-24
Повідомлень: 2

Re: Задача Dictionary

Understand sad

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt