Witam, mam dziwny problem bo nie mogę doszukać się błędu "błąd wykonania ( SIGFPE) ", jeśli ktoś mógł by rzucić okiem.
#include <iostream>
using namespace std;
int sil ( int n )
{
if ( n==0 || n==1 ) return 1;
if ( n>1 ) return sil(n-1)*n;
}
int ostatnia ( int s )
{
int p=s%10;
return p;
}
int ostatnia_nie_zerowa ( int s, int k=1 )
{
int z=s/k;
int p=z%10;
if ( p!=0 ) return p;
if ( p==0 ) return ostatnia_nie_zerowa(s,k*10);
}
int ile ( int s )
{
int ile=0;
for ( ; s>1 ; s/=10 ) {ile++;}
return ile;
}
int main()
{
int t,silnia,w,n;
cin >> t;
while ( t-- )
{
cin >> n >> w;
silnia=sil(n);
if ( w==1 )
{
cout << ostatnia(silnia) << "\n";
}
if (w==2)
{
cout << ostatnia_nie_zerowa(silnia) << "\n";
}
if (w==3)
{
cout << ile(silnia) << "\n";
}
}
return 0;
}