Description
计算N^N%10,其中1<=N<=1,000,000,000。 输入的第一行n为用例,计算后序的n行结果。
Sample Input
2
3
4
Sample Output
7
6
Solution
二分快速幂板题。
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
LL binary_pow(LL a, LL b, LL m)
{
LL ans = 1;
a = a % m;
while (b > 0)
{
if (b & 1) //等价b%2==1
ans = ans * a % m;
a = a * a % m; //令a平方后取模
b >>= 1; //等价b=b/2
}
return ans;
}
int main()
{
// freopen("in.txt", "r", stdin);
LL a, m = 10, n;
while (~scanf("%lld", &n))
{
for (int i = 0; i < n; i++)
{
scanf("%lld", &a);
printf("%lld\n", binary_pow(a, a, 1));
}
}
return 0;
}