14:求10000以内n的阶乘

原题链接

总时间限制: 
5000ms 
内存限制: 
655360kB
描述

求10000以内n的阶乘。

输入
只有一行输入,整数n(0<=n<=10000)。
输出
一行,即n!的值。
样例输入
100
样例输出
933262154439441526816992388562667004907159682643816214685929638952175999932299

源码

#include
using namespace std;
int main()
{
    int n,a,fac[50000],ans[50000]={1,1};
    cin >> n;
    for(int i=1; i<=n; i++){
        for (int j=1;j<=ans[0];j++){
            ans[j] = ans[j]*i+fac[j];
            fac[j] = 0;
            if (ans[j] >= 10){
                fac[j+1] += ans[j]/10;
                ans[j] %= 10;
                if (j==ans[0]) ++ans[0];
            }
        }
    }
    for (int i=ans[0]; i>0; i--) cout << ans[i];
    cout << endl;
    return 0;
}

14:求10000以内n的阶乘_第1张图片

你可能感兴趣的:(OJ-1.6编程基础之一维数组)