Błąd w funkcji, przekroczenie limitu czasowego

0

hejo mógłby mi ktoś pomoc znaleźć błąd w kodzie ?
Moje zadanie wyglada tak:

Zadanie Bez królików
Agnieszka tak polubiła ciągi rekurencyjne, że nie zastanawia się już dłużej nad królikami, tylko analizuje same wzory. Tym razem prosi o obliczenie wartości elementów ciągu określonego wzorami: A(0)=4, A(1)=7, A(n)=2A(n-1)+5A(n-2) dla n>=2. Agnieszka zdaje sobie sprawę, że taki ciąg rośnie bardzo szybko, a więc chciałaby poznać tylko reszty z dzielenia jego wyrazów przez 2011.

Wejście

W pierwszej linii wejścia znajduje się jedna liczba całkowita t<=10 oznaczająca liczbę testów.
W kolejnych liniach znajdują się poszczególne testy. Każdy z nich składa się z jednej liczby całkowitej n (0<=n<=100).

Wyjście

Dla każdego testu wypisz w osobnej linii resztę z dzielenia wartości A(n) przez 2011.

Przykład

Wejście:
3
0
1
2
Wyjście:
4
7
34

a mój kod to :

 #include <iostream>
using namespace std;
int aga(int n)
{
    int tab[10];
    tab[0]=4;
    tab[1]=7;
    if(n==0) return tab[0]=4;
    if(n==1) return tab[1]=7;
    
    if(n>=2)
    {
    tab[n]=((2*aga(n-1))+(5*aga(n-2)))%2011;
    return tab[n];
    } 
    
}
int main()
{
    int t,n,x;
    int tab2[10];
    
    cin>>t;
    
    for(int z=0;z<10;z++)
    {
    tab2[z]=0;
    }
    
    for(int i=0;i<t;i++)
    {
        cin>>n;
        x=aga(n);
        tab2[i]=x;
    }
    
    for(int y=0;y<t;y++)
    {
        cout<<tab2[y]<<endl;
    }
    
}

prosze o szybką pomoc

0
#include <iostream>
using namespace std;

unsigned aga(unsigned n)
  {
   static unsigned tab[1000]={4,7}; // sprawdź jaka może być największa liczba
   if(!tab[n]) tab[n]=(2*aga(n-1)+5*aga(n-2))%2011;
   return tab[n];
  }

int main()
  {
   cin>>t;
   while(t--)
     {
      cin>>n;
      cout<<aga(n)<<endl;
     }
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1