题目大意 :就N! 0<=N<=100; 思路:a[]数组每一位保存5位(以保证乘上10000后不会溢出) 需要注意的是 每次要在乘完每一位后才可进位 明天出发了~加油!! #include <iostream> using namespace std; int a[7200]; void calc(int n) { memset(a,0,sizeof(a)); int i,j,len; a[0]=1; len=1; for(i=2;i<=n;i++) { for(j=0;j<len;j++) a[j]*=i; for(j=0;j<len;j++) if(a[j]>=100000) { a[j+1]+=a[j]/100000; a[j]%=100000; } if(a[len]) len++; } printf("%d",a[len-1]); for(i=len-2;i>=0;i--) printf("%05d",a[i]); printf("/n"); } int main() { int n; while(scanf("%d",&n)!=EOF) calc(n); return 0; }