Tutorial

Od przybytku głowa nie boli

Powiększmy zatem tablicę, a nawet (na wszelki wypadek) zróbmy pewną rezerwę:

var
  d,n,i : longint;
  f : array[0..200000000] of longint;

begin
  readln(d);
  while (d>0) do
  begin
    d:=d-1;
    readln(n);
    f[0]:=0; f[1]:=1;
    for i:=2 to n do f[i]:=(f[i-1]+f[i-2]) mod 10000;
    writeln(f[n]);
  end;
end.

Wysłanie takiego programu spowoduje, że Sprawdzarka zwróci także ocenę:

Runtime Error

Zadeklarowana tablica jest zbyt duża. Każdy program ma do dyspozycji jedynie 32MB pamięci na stos i 32MB na stertę, więc wszystkie zmienne i tablice (także te zaalokowane dynamicznie) nie mogą zajmować więcej.

W ogólności rezerwa jest zalecana, by zabezpieczyć się przed błędem przekroczenia zakresu tablicy o kilka elementów. Jednak nie powinna być ona aż tak absurdalnie duża, a wynosić jedynie parę (np. 10) elementów.