@rihkddd
2014-11-25T10:14:20.000000Z
字数 1730
阅读 2058
求
注意: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);}}