大数数组(结构体)

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了大数数组(结构体)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

大数数组,阶乘

《深入浅出程序设计竞赛》上看到了一个很妙的结构体用法,创建了一个大数类型。 并且用运算符重构写出了加法和乘法,摘下来记录下。 主函数部分为算出一个数的阶乘

#include<string>
#include<cstdio>
#include<iostream>
#include<bITs/stdc++.h>
using namespace std;

struct Bigint{
    int len, a[51];
    Bigint(int x = 0){
    memset(a, 0, sizeof (a));
    for(len = 1; x; len++)
        a[len] = x % 10, x /= 10;
    len--;
    }

    int &amp;operator[](int i){
        return a[i];
    }

    void flatten(int L){
        len = L;
        for (int i = 1; i <=len; i++)
            a[i + 1] += a[i] / 10, a[i] %= 10;
        for (; !a[len]; )
            len--;
    }

    void PRint(){
        for (int i = max(len, 1); i >= 1; i--)
            cout<<a[i];
    }
};

Bigint oPErator*(Bigint a, int b){
    Bigint c;
    int len = a.len;
    for (int i = 1; i <= len; i++)
        c[i] = a[i] * b;
    c.flatten(len + 11);
    return c;
}

int main()
{
    Bigint ans(1);
    int n;
    cin>>n;
    for (int i = 1; i <= n; i++)
    {
        ans = ans * i;
    }
    ans.print();
}

脚本宝典总结

以上是脚本宝典为你收集整理的大数数组(结构体)全部内容,希望文章能够帮你解决大数数组(结构体)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。