Tutorial



Od przybytku głowa nie boli

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

#include <stdio.h>
int d,n,i;
int f[200000000];

int main()
{
  scanf("%d\n",&d);
  while (d--)
  {
    scanf("%d\n",&n);
    f[0]=0; f[1]=1;
    for (i=2; i<=n; i++) f[i]=(f[i-1]+f[i-2])%10000;
    printf("%d\n",f[n]);
  }
  return 0;
}

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.