这题没用long long WA了一次,改错了又WA了一次,3A。。。
题意:给你了两个数字a、b,求a^b的最后一位。
解法:快速幂,对10取余,由于 2^30 * 2^30 会超int 所以要用long long。
代码:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define pi acos(-1.0)
#define eps 1e-8
using namespace std;
long long pow(long long a,long long m)
{
long long b=1;
while(m)
{
if(m&1)
{
b = b*a;
b = b%10;
}
m>>=1;
a=a*a;
a=a%10;
}
return b%10;
}
int main()
{
//freopen("in.txt","r",stdin);
long long a, b;
while(~scanf("%I64d%I64d",&a,&b))
{
printf("%I64d\n",pow(a,b));
}
return 0;
}