#include<stdio.h>//题目的意思就是求a^b的最后一位数是多少
int main()
{
int a,b;
int temp,temp1;
int num[200000];//循环出来的一个周期的值都存储在数组当中
int t;
while(scanf("%d%d",&a,&b)!=EOF)
{
t=2;
a=a%10;// 此处是a^1,所以下面是b!=1循环了b-1次,总共循环b次
num[1]=a;
temp=a;// 注意分别保存a,b的原值
temp1=b;//
while(b!=1)// 最坏的情况就是循环b次,题目在循环过程当中会出现周期
{
a=a*temp;
a=a%10;// 因为求得是最后一位数,所以在每次计算出来的结果后面直接取余,并保存
num[t]=a;
if(a==num[1])
break;
t++;// t-1就是用来记录一个周期内包含多少个数
b--;
//printf("%d\n",a);
}
//printf("%d\n",t);
if(temp1%(t-1)==0) //这里注意了,比如8^800的余数为0,而且周期为4,所以要特殊考虑
printf("%d\n",num[t-1]);
else
printf("%d\n",num[temp1%(t-1)]);
}
return 0;
}
hdu 1097 a hard puzzle
最新推荐文章于 2021-04-01 22:58:00 发布