@rihkddd
2014-11-25T18:14:20.000000Z
字数 1730
阅读 1843
求
注意:2的幂的最后一位会出现循环节,且这个式子中没有含5的倍数的数出现,因此可以很方便的求出最后一位数字。
初看结论会感觉到有点神奇,怎么会出现一个
思路就是这样,然后形式化一点就可以得出下面的式子:
#include <string.h>
#include <stdio.h>
int fact[10]={1,1,2,6,4,6,2,4,8};
char str[1010];
int str10[1500];
int main()
{
while(~scanf("%s",str))
{
if (strcmp(str,"1")>0){
int i,j,prod=1,r=-1,sum=0,mod=0,tem;
int len=strlen(str);
for (i = 0; i < len; ++i) str10[i]=str[i]-'0';
for (i=0; i<len; i+=(!str10[i])){
for (j = i,mod=0; j < len; ++j){
tem=str10[j];
str10[j]=(mod<<1)+(str10[j]>4);
mod=tem%5;
}
sum+=(++r)*mod;
prod=prod*fact[mod]%10;
}
printf("%d\n", fact[sum%4+5]*prod%10);
continue;
}
printf("%d\n",1);
}
}