- 快速幂求法(快速幂取模)
a,b,c || a^b%c
b若为奇数,a^(b-1)/2
Description
给你两个正整数N和M,求出N^M的最右边的数字是多少。
Input
输入包含多组测试用例,第一个行是一个整数T代表有T组测试。
接下来的T行每行包含两个正整数N,M(1<=N,M<=1,000,000,000)由空格分开。
Output
对每组测试用例,输出N^M最右边的数字。
Sample Input
4
2 3
3 3
4 3
5 3
Sample Output
8
7
4
5
HINT
2^3 = 8 最右边的数为8
3^3 = 27 最右边的数为7
4^3 = 64 最右边的数为4
5^3 = 125 最右边的数为5
#include<iostream>
#include<algorithm>
using namespace std;
int fast_pow(int a,int b) //快速模幂
{
int tag=a;
int ans=1;
while(b)
{
if(b&1)
ans=(ans*tag)%10;
tag=(tag*tag)%10;
b>>=1;
}
return ans;
}
int main()
{
intn,m,t;
while(cin>>t)
{
inta[t];
for(int i=0;i<t;i++)
{
cin>>n>>m;
n=n%10;
a[i]=fast_pow(n,m)%10;
}
for(int j=0;j<t;j++)
cout<<a[j]<<endl;
}
return 0;
}