求10000以内n的阶乘

具体的不用多说,就是高精度乘法,乘来乘去的,答案就出来了。

#include<iostream>
using namespace std;
int Ans[100000];
int main() {
    int n,Lgt = 1;
    scanf("%d",&n);
    Ans[1] = 1;
    for(int i = 2; i<=n; i++) {
        int Rem = 0;
        for(int j = 1; j<=Lgt; j++) {
            Ans[j] *= i;
            Ans[j] += Rem;
            Rem = Ans[j] / 10;
            Ans[j] %= 10;
        }
        while(Rem) {
            Ans[++Lgt] = Rem % 10;
            Rem /= 10;
        }
    }
    for(int i = Lgt; i>=1; i--) {
        printf("%d",Ans[i]);
    }
    return 0;
}
posted @ 2018-04-30 17:14  WenOI  阅读(505)  评论(0编辑  收藏  举报
水波背景