大数阶乘模板 hdoj1042
N!
Time Limit: 10000/5000 MS (Java/Others)??? Memory Limit: 65536/32768 K (Java/Others)
Input Output Sample Input Sample Output Author Recommend #include<stdio.h> int main() { ? int n; ? while(~scanf("%d",&n)) ? { ? ?memset(jc,sizeof(jc)); ? ? ??? int i,j,k,len,digit,t; ????? jc[0]=len=1;????????????????????????? ?//将结果初始化为1 ????? ????? for(i=2;i<=n;i++)???????????????? ?//开始阶乘,从2 开始 ????? { ????? ?for(j=1,digit=0;j<=len;j++) //应阶乘中的一项与当前所得临时结果的某位//相乘(加上进位) ????? ?{ ????? ??t=jc[j-1]*i+digit;??????????????? ?//digit 进位 ????? ??jc[j-1]=t%10; ????? ??digit=t/10; ????? ?} ????? ?while(digit)?????????????????????? //判断最高位是否进位 ????? ?{ ????? ??jc[++len-1]=digit%10;?? //有进位,不仅各项有变化,而且常盾也要变 ????? ??digit/=10; ????? ?} ????? } ??? ????? for(k=len;k>0;--k) ????? ?printf("%d",jc[k-1]);??? //此处应注意 ????? ?printf("n"); ??? ? }? ? return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |