Hey, jestem właśnie w trakcie rozwiązywania tego zadania i po prostu się poddaję. Próbowałem iteracją, próbowałem rekurencją i nadal sędzia mówi, że przekroczyłem limit czasu. Możecie coś doradzić? Oto kody:
Rekurencja (zdania w cudzysłowie wywaliłem rzecz jasna):
Summary
include
include
using namespace std;
long long int silnia_f (long long int n)
{
if (n <= 1) return 1;
else return n*silnia_f(n-1);
}
int main()
{
long long int n,silnia, dziesiatki, jednosci;
cout<<"Podaj ilosc liczb do sprawdzenia: ";
cin>>n;
if(n<0)
{
cerr<<"Podales liczbe ujemna!";
exit(0);
}
else if(n>30)
{
cerr<<"Podales za duzo ilosc liczb do sprawdzenia!";
exit (0);
}
int tab[n];
for(int i=0; i<n; i++)
{
cout<<"Podaj liczbe: ";
cin>>tab[i];
}
for(int i=0; i<n; i++)
{
silnia=silnia_f(tab[i]);
dziesiatki=(silnia/10)%10;
jednosci=silnia%10;
cout<<dziesiatki<<" ";
cout<<jednosci<<endl;
}
delete [] tab;
return 0;
}
Iteracja:
Summary
include
using namespace std;
int main()
{
long long int, n,silnia, m, dziesiatki, jednosci;
cout<<"Podaj ilosc liczb do sprawdzenia: ";
cin>>n; // ile liczb
int tab[n];
for(int i=0; i<n; i++)
{
cout<<"Podaj liczbe: ";
cin>>tab[i];
}
for(int i=0; i<n; i++)
{
silnia=tab[i];
m=tab[i];
for(int j=1; j<m; j++)
{
tab[i]--;
silnia=silnia*tab[i];
}
dziesiatki=(silnia/10)%10;
jednosci=silnia%10;
cout<<dziesiatki<<" ";
cout<<jednosci<<endl;
}
return 0;
}