nyoj 28 大数阶乘
发布时间:2020-12-14 03:36:20  所属栏目:大数据  来源:网络整理 
            导读:题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=28 用运算符重载,以及滚动数组来解的。 #include iostream#include cstdio#include cstringusing namespace std;const int MAXN = 5010;struct BigInt{ int l; int s[MAXN2];}c[2];BigInt oper
                
                
                
            | 
                         题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=28 用运算符重载,以及滚动数组来解的。 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 5010;
struct BigInt
{
    int l;
    int s[MAXN<<2];
}c[2];
BigInt operator *(BigInt a,int b)
{
    int i;
    for(i = a.l; i < (MAXN<<2); ++i)
        a.s[i] = 0;
    for(i = 0; i < a.l; ++i)
        a.s[i] *= b;
    for(i = 0; i < a.l; ++i)
    {
        a.s[i+1] += a.s[i]/10;
        a.s[i] %= 10;
    }
    while(a.s[a.l] != 0)
    {
        a.s[a.l+1] = a.s[a.l]/10;
        a.s[a.l] %= 10;
        a.l++;
    }
    return a;
}
void Print(BigInt a)
{
    int i;
    for(i = a.l-1; i >= 0; --i)
        printf("%d",a.s[i]);
    printf("n");
}
int main()
{
    int m;
    while(~scanf("%d",&m))
    {
        int i;
        c[0].l = 1,c[0].s[0] = 1;
        for(i = 1; i <= m; ++i)
            c[i%2] = c[(i+1)%2] * i;
        Print(c[m%2]);
    }
    return 0;
}
        (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
