题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061
题目大意:n的n次方,输入个位数~
这里介绍一个小的算法:快速幂取模
首先,有n个数相乘,如s=a*a*a*a*a*a*a*a*a;假设b=a*a;则s=b*b*b*b*a;继续假设c=b*b;则s=c*c*a;继续假设d=c*c;则s=d*a;最后输出s。节省了时间。
#include <iostream>
#include <cstdio>
using namespace std;
int fun(int a,int b,int c)
{
int s=1;
while (b)
{
if (b%2==1)
s=s*a%c;
a=(a*a)%c;
b/=2;
}
return s;
}
int main ()
{
int t;
cin>>t;
while (t--)
{
int n;
cin>>n;
int m=fun(n%10,n,10);
printf ("%d\n",m);
}
return 0;
}