#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