求N^N的最后一位数,实在想不出来,看了晚上的解法。可以找规律,也可以硬求用二分幂的方法。
//找规律的方法
#include<stdio.h>
int main()
{
long n,k;
int i,m,remainder=0;
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%ld",&n);
k = n;
n = n%10;
if(n == 1 || n == 5 || n == 6 || n == 0|| n == 9 )
{
remainder = n;
}
else if( n == 4)
{
remainder = 6;
}
else if(n == 2 || n == 8)
{
if(k%4 == 2)
remainder = (n*n)%10;
else if(k%4 == 0)
remainder = (n*n*n*n)%10;
}
else if(n == 3 || n == 7)
{
if(k%4 == 1)
remainder = n;
else if(k%4 == 3)
remainder = (n*n*n)%10;
}
printf("%d/n",remainder);
}
return 0;
}
//二分幂的方法
#include <stdio.h>
int binary_exp(int base, int exp) {
if (exp == 0)
return 1;
if (exp & 1) {
return (base * binary_exp(base, exp - 1)) % 10;
} else {
exp >>= 1;
int tmp = binary_exp(base, exp) % 10;
return (tmp * tmp) % 10;
}
}
int main() {
int test, n;
scanf("%d", &test);
while (test--) {
scanf("%d", &n);
int base = n % 10, exp = n;
printf("%d/n", binary_exp(base, exp));
}
return 0;
}