求1000!
#include <bits/stdc++.h> using namespace std; #define Maxn 1000 int A[Maxn]; int main(){ int i,j,n; scanf("%d",&n); memset(A,0,sizeof(A)); A[0] = 1;//第一位要设置为1,否则结果就全是0了 for(int i = 2; i <= n; i++){ int c = 0; for(j = 0; j < Maxn; j++){//模拟计算 int s = A[j]*i + c; A[j] = s % 10; printf("%d\n",s%10); c = s/10; } } //是从后往前计算的,例如115,数组里存的就是511,然后去掉前导0,倒序输出即可 for(j = Maxn -1; j >= 0; j--){//去掉前导0 if( A[j] ){ break; } } for(i = j; i >= 0; i--){ printf("%d",A[i]); } cout << endl; return 0; }