hoj 1097
//杭电1097
//求a^b的个位数字
//思路:(1)只计算个位数(2)计算过程中会出现周期
#include <stdio.h>
int main()
{
//此处使用__int64
__int64 a,b;
while(scanf("%I64d%I64d",&a,&b)!=EOF)
{
__int64 data[10];
//times为循环周期
int times =0;
if(a>9)
{
a = a % 10;
}
data[0] = a;
__int64 start = a;
times++;
a = a*start %10;
while(a!=start)
{
data[times] = a;
times++;
a = a*start %10;
}
int i = b% times -1;
//输出时分两种情况,特别注意i<0的处理
if(i<0)
printf("%I64d\n",data[times-1]);
else
printf("%I64d\n",data[b % times-1]);
}
return 0;
}
浙公网安备 33010602011771号