读书人

N!阶乘的高效率算法

发布时间: 2012-10-29 10:03:53 作者: rapoo

N!阶乘的高效算法
阶乘递归代码:(教材)

#include<stdio.h> #include<string.h> #define maxn 10000 int lastdigit(char buf[]) { const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len=strlen(buf),a[maxn],i,c,ret=1; if(len==1) return mod[buf[0]-'0']; for(i=0;i<len;i++) a[i]=buf[len-1-i]-'0'; for(;len;len-=!a[len-1]) { ret=ret*mod[a[1]%2*10+a[0]]%5; for(c=0,i=len-1;i>=0;i--) c=c*10+a[i],a[i]=c/5,c%=5; } return ret+ret%2*5; } int main() { char n[maxn]; int a; while(scanf("%s",n)!=EOF) { a=lastdigit(n); printf("%d\n",a); } return 0; }

读书人网 >编程

热点推荐