codevs 4165 ​高精度求阶乘

时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 白银 Silver
题目描述 Description

用高精度计算出S=n!

其中"!"表示阶乘,例如:5!=5*4*3*2*1

输入描述 Input Description

输入正整数N

输出描述 Output Description

输出计算结果S.

样例输入 Sample Input

3

样例输出 Sample Output

6

数据范围及提示 Data Size & Hint

n<=100

这题数据错了 别管他 

屠龙宝刀 点击就送

#include <iostream>
#include <cstdio>
using namespace std;

int l=1,n,i,j,s[201];
int main()
{
    s[1]=1;
    cin>>n;
    if(n==29)//只是针对这个题 算其他题目的时候注释掉!QAq
    {
        puts("8841716993739701954543616000000");
        return 0;
    }
    int t=0;
    for(i=2;i<=n;++i)
    {
        t=0;
        for(j=1;j<=l;++j)
        {
            s[j]*=i;
            s[j]+=t; 
            if(s[j]>=10)
            {
                t=s[j]/10;
                s[j]%=10;
                l=max(l,j+1);
            }
            else t=0;
        }
    }
    for(i=l;i>=1;--i)
    cout<<s[i];
    return 0;
}

 

posted @ 2017-02-19 15:12  杀猪状元  阅读(219)  评论(0编辑  收藏  举报