加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读