首页 > 代码库 > 高精度,大数的阶乘

高精度,大数的阶乘

求1000!

#include <bits/stdc++.h>using namespace std;#define Maxn 1000int 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;}

  

高精度,大数的阶乘