聽說是大數階乘,沒測過!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( void )
{
    int n, i, j, len, g, t, zero;
    static unsigned int a[10000];
    memset(a, 0, 40000);
    a[0]=1;len=1; zero=0;
    scanf("%d", &n);
    for(i=2; i<=n; i++){
        for(j=zero,g=0; j<len; j++){
            t=a[j]*i+g;
            g=t/10000;
            t=t%10000;
            a[j]=t;
            if((!t)&&(j-zero==1)) ++zero;
        }
        while(g){
            a[len++]=g%10000;
            g/=10000;
        }
     }
    while(!a[len]) len--;
    printf("%d", a[len--]);
    while(len>=0) printf("%04d", a[len--]);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章