1 条题解
-
0
C :
#include<stdio.h> int main() { int a[10000]; int n,digit,temp; while(scanf("%d",&n) && n != 0) { a[0]=1; digit=1; for(int i=2; i<=n; i++) { int carry = 0; for(int j=1; j<=digit; ++j) { temp=a[j-1]*i+carry; a[j-1]=temp%10; carry=temp/10; } while(carry) { ++digit; a[digit-1]=carry%10; carry/=10; } } for(int k=digit; k>=1; --k) printf("%d",a[k-1]); printf("\n"); } return 0; }
C++ :
#include<cstdio> #include<string.h> #include<iostream> #include<algorithm> #include<stdlib.h> #include<time.h> #define MIN 1 #define MAX 3000 const int maxn=3000; int f[maxn]; using namespace std; int main() { int i,j,n; //freopen("in.txt","r",stdin); //freopen("tt1.txt","w",stdout); while(cin>>n) { if(n==0) break; memset(f,0,sizeof(f)); f[0]=1; for(i=2; i<=n; i++) { int c=0; for(j=0; j<maxn; j++) { int s=f[j]*i+c; f[j]=s%10; c=s/10; } } for(j=maxn-1; j>=0; j-- ) if(f[j]) break; for(i=j; i>=0; i--) cout<<f[i]; cout<<endl; } return 0; }
- 1
信息
- ID
- 3343
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者