码迷,mamicode.com
首页 > 其他好文 > 详细

高精度,大数的阶乘

时间:2016-09-06 21:20:19      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

求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;
}

  

高精度,大数的阶乘

标签:

原文地址:http://www.cnblogs.com/yakoazz/p/5847062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!