Witam serdecznie!
Mam mały problem z zadaniem "Dwie cyfry silni" SPOJa, wcześniej gdy wykonałem kod z silnią przeprowadzoną iteracyjnie, otrzymałem komunikat o przekroczeniu limitu czasu, postanowiłem więc napisać silnie rekurencyjnie, niestety nadal otrzymuję ten sam komunikat. Zdaję sobie sprawę, z tego iż silnia rośnie w zabójczym tempie, ale nie mam niestety pomysłu jak mógłbym uprościć ten kod jeszcze bardziej i co za tym idzie wpłynąć na jego szybkość wykonywania się. Prosiłbym o pomoc przy tym kodzie oraz jakieś wskazówki dotyczące przyspieszania programów w C++. Z góry dziękuje i pozdrawiam!
Oto mój kod:
#include <cstdlib>
#include <iostream>
using namespace std;
long long silnia(int n)
{
if(n<2)
return 1;
return n*silnia(n-1);
}
int main()
{
int t;
cin >> t;
int n;
for(int i=0; i<t; i++)
{
cin>>n;
cout << (silnia(n))%10 << " " << (((silnia(n))%100)-((silnia(n))%10))/10<< endl;
};
return 0;
}