您的位置:首页 > 其它

Problem F: 最右边的数字

2015-08-12 18:22 204 查看
快速幂求法(快速幂取模)

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: