首页 > 代码库 > 51NOD 1057 N的阶乘

51NOD 1057 N的阶乘

1057 N的阶乘技术分享
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 
输入N求N的阶乘的准确值。
 
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120

技术分享
#include <bits/stdc++.h>#define clear(a) memset(a,0,sizeof(a))using namespace std;typedef long long ll;const int mod = 1e8;ll s[10010];int main (){    int n;    while (~scanf("%d",&n) )    {        clear(s);        int m =0;        s[0] = 1;        for(int i=1;i <= n;i++)        {            int c = 0;//c表示最高位所留下的  相当于模拟乘法把            for(int j=0;j <= m;j++)            {                s[j] = s[j]*i + c;                c = s[j] /mod;                s[j] %= mod;            }            if(c > 0)            {                m++;                s[m] = c;            }        }        printf("%lld",s[m]);        for(int i=m-1;i >= 0;i--)            printf("%08lld",s[i]);        puts("");    }    return 0;}
阶乘模拟

 

51NOD 1057 N的阶乘