MWPZ - Mistrzostwa Wielkopolski w Programowaniu Zespolowym

Tutorial

Auæ, to boli

Zostawmy ju¿ zatem rekurencjê, bo w tym zadaniu to jednak nie jest dobry pomys³. Wróæmy do pierwszego kodu z drobn± zmian±:

var
  d,n,i : longint;
  f : array[0..200] 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.

Powy¿szy program Sprawdzarka oceni równie¿ na:

Runtime Error

W tym przypadku powodem takiej odpowiedzi jest zadeklarowanie zbyt ma³ej tablicy. W tre¶ci zadania jest napisane, ¿e N ≤ 20000, a zadeklarowana tablica pomie¶ci tylko 200 elementów. Zwykle przy próbie zapisania elementu poza tablicê nastêpuje pisanie po niezaalokowanej (nieswojej) pamiêci. Jest to powa¿nym b³êdem i dlatego Sprawdzarka zwraca tê ocenê.

Uwaga! Przekroczenie zakresu tablicy nie zawsze objawia siê poprzez Runtime Error. Program mo¿e nadpisaæ inne (w³asne) struktury/tablice/zmienne, co mo¿e zaowocowaæ ocen± Wrong Answer, albo (co jest ma³o prawdopodobne) Time Limit Exceeded, je¶li spowoduje to zapêtlenie programu. Mo¿ecie te¿ mieæ szczê¶cie i b³±d siê w ogóle nie ujawni podczas testowania i program zostanie uznany za poprawny, ale nie liczyliby¶my na to ;).