Witam. Mam problem z zadaniem ze SPOJ'a. Znalazłem taki kod i nie wiem jak działa funkcja jednosc. Czy mógłby mi ktoś wytłumaczyć dlaczego jest to zrealizowane tak, a nie inaczej? Z góry dziękuję za odpowiedź ;)
#include <iostream>
using namespace std;
int jednosc(unsigned long long, unsigned long long);
int main()
{
int n;
unsigned long long a, b;
cin >> n;
for(int i=0; i<n; i++)
{
cin >> a >> b;
cout << jednosc(a, b) << endl;
}
return 0;
}
int jednosc(unsigned long long a, unsigned long long b)
{
if(b==0) return 1;
else if(b==1) return (a%10);
else if((a%10)==1) return 1;
else if((a%10)==5) return 5;
else if((a%10)==6) return 6;
if( ((a%10)==2) || (a%10)==3 || ((a%10)==7) || ((a%10)==8) ) b=(b%4)+4;
if( ((a%10)==4) || (a%10)==9 ) b=(b%2)+2;
a%=10;
int x=a;
for(unsigned int i=1; i<b; i++)
{
x*=a;
x%=10;
}
return x;
}