求10000以内n的阶乘

求10000以内n的阶乘

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 const int N=36000;
 7 
 8 int main(){
 9     int n,a[N];
10     memset(a,0,sizeof(a));
11     cin>>n;
12     a[0]=a[1]=1;
13     for(int i=1;i<=n;i++){
14         int carry=0;
15         for(int j=1;j<=a[0];j++){
16             int tmp=a[j]*i+carry;
17             a[j]=tmp%10;
18             carry=tmp/10;
19         }
20         //处理最高位
21         while(carry){
22             a[0]++;
23             a[a[0]]=carry%10;
24             carry/=10;            
25         }
26     }
27     if(n<1)cout<<"0";
28     else{
29         for(int i=a[0];i>0;i--){
30             cout<<a[i];
31         }
32     }
33     return 0;
34 }

 

上一篇:整数二分、浮点数二分


下一篇:解决 Elasticsearch 超过 10000 条无法查询的问题