大数阶乘(10000级别) 51Nod 1057

来源:互联网 发布:手机联系淘宝人工客服 编辑:程序博客网 时间:2024/06/05 01:02

题目链接:

51Nod 1057

问题描述

输入N求N的阶乘的准确值。

Input

输入N(1 <= N <= 10000)

Output

输出N的阶乘

Input示例

5

Output示例

120

思路:

一百万亿进制(14个0),大数相乘,求阶乘

代码:

#include<iostream>#include<stdio.h>#include<algorithm>#define LL long longusing namespace std;#define mod 100000000000000;//14个0const int N = 1000086;LL a[N]; int main(){    int n;    scanf("%d", &n);    LL l = 0;    a[0] = 1;    for(int i = 1; i <= n; i++)    {        LL c = 0;        for(int j = 0; j <= l; j++)        {            LL t = a[j] * i + c;            a[j] = t % mod;            c = t / mod;        }        if(c != 0)        {            l++;            a[l] = c;        }    }    printf("%lld", a[l]);    for(int i = l-1; i >= 0; i--)    {        printf("%014lld", a[i]);//保留前导0    }    return 0;}
0 0
原创粉丝点击