模板:大數階乘

#include <stdio.h>
int main()
{
    const int maxn = ...;       //n的階乘所得的值的大體位數
    int a[maxn];//儲存每一位所獲得的數 
    int temp,digit,n,i,j=0;//temp每次的得數   digit每次得數的位數  
    scanf("%d",&n);
    a[0]=1;//從1開始乘 
    digit=1;//位數從第一位開始 
    for(i=2;i<=n;i++)
    {
        int num=0;
        for(j=0;j<digit;j++) 
        {
            temp=a[j]*i+num;        
            a[j]=temp%10;
            num=temp/10;
        }
        while(num)//判斷退出循環後,num的值是否爲0 
        {
            a[digit++]=num%10;//繼續儲存 
            num=num/10;
        }
    }
    for(i=digit-1;i>=0;i--)
        printf("%d",a[i]);
    printf("\n");
    return 0;
}   //對應習題:HDU-1042  
相關文章
相關標籤/搜索