高精度整数的解法

作者: 故梦_三笙 | 来源:发表于2019-04-16 09:01 被阅读2次

题意很好理解,就是计算过程中可能超出int 的范围,现在就来解决这个问题。

王道机试指南给出的解法是采用一个digit[1000]数组存储每四位的值,例如10001这个数,在数组里面存放的方式就是digit[0]=1,digit[1]=1;这样就能把那些大数存储下来了。话不多说看代码

#include<stdio.h>

struct bigInt

{

    int digit[1000];

    int size;

    void init()

    {

        for(int i=0;i<1000;i++)

            digit[i]=0;

        size=0;

    }

    void set(int x)//用一个小整数设置高精度整数

{

    init();

    do

    {

        digit[size++]=x%10000;

        x/=10000;

    }while(x!=0);

}

    void output()

    {

        for(int i=size-1;i>=0;i--)

        {

            if(i!=size-1)

                printf("%04d",digit[i]);

            else

                printf("%d",digit[i]);

        }

    }

    bigInt operator *(int x)const

    {

        bigInt ret;

        ret.init();

        int carry=0;

        for(int i=0;i<size;i++)

        {

            int temp=x*digit[i]+carry;

            carry=temp/10000;

            temp=temp%10000;

            ret.digit[ret.size++]=temp;

        }

        if(carry!=0)

            ret.digit[ret.size++]=carry;

        return ret;

    }

}a;

int main()

{

    int n;

    while(scanf("%d",&n)!=EOF)

    {

      a.init();

        a.set(1);

        for(int i=1;i<=n;i++)

            a=a*i;

        a.output();

    }

    return 0;

}

其他类似的大精度整数都可以这样计算,希望下次见到我会做呵呵

相关文章

  • 高精度整数的解法

    题意很好理解,就是计算过程中可能超出int 的范围,现在就来解决这个问题。 王道机试指南给出的解法是采用一个dig...

  • 高精度数(大整数)乘法

    大整数乘法 上一期(高精度加法)今天我们来研讨一下高精度乘法。 题目描述:将两个大整数(最多100位)相乘,输出结...

  • 【JS算法】简单的位运算

    先来熟悉下位运算 算法231题:给你一个整数 n,请你判断该整数是否是 2 的幂次方 普通解法 位运算解法 2的X...

  • 高精度加法(C++实现)

    高精度加法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式加法计算 步骤 以...

  • 上交OJ-1015. 高精度乘法

    1015. 高精度乘法 Description 输入2个整数a和b,输出a*b。 Input Format 输入有...

  • 高精度运算

    高精度计算用于解决位数超过32位的大整数加减乘除问题。高精度的存储是把每一位单独储存,如num[1]为个位,num...

  • 高精度减法(C++实现)

    高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本...

  • 算法(leetode,附思维导图 + 全部解法)300题之(7)

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(7)整数反转 一 题目描述 二 解法总览(思...

  • 上交OJ-1014. 高精度加法

    1014. 高精度加法 Description 输入2个整数a和b,输出a+b。 Input Format 输入有...

  • 快乐数

    题目: 题目的理解: 分解整数,平方和,分解整数。 python实现 想看最优解法移步此处 提交 // END 当...

网友评论

    本文标题:高精度整数的解法

    本文链接:https://www.haomeiwen.com/subject/jqkvwqtx.html