zoukankan      html  css  js  c++  java
  • 大整数加法(高精度加法)

    什么是大整数?所谓大整数就是特别大的是(超出long long的范围),这个时候我们常用的a+b就不能用了;

    但是我们可以将整数转化为字符串来处理,利用加法的原理,一位一位的来加,因为字符串没有长度的限制;

    题目链接:https://www.luogu.org/problem/P1601

    题目描述

    高精度加法,相当于a+b problem,不用考虑负数.

    输入格式

    分两行输入。a,b<=10^{500}a,b<=10500

    输出格式

    输出只有一行,代表a+b的值

    输入输出样例

    输入 #1
    1
    1
    输出 #1
    2
    C++代码:
    #include<iostream>
    #include<cstring>
    #include<string> 
    using namespace std;
    int main()
    {
        string a;
        string b;
        cin>>a;
        cin>>b;
        if(a==b) cout<<"0";//特判a和b相等 
        else 
        {
        int A[10000]={0},B[10000]={0},C[10000]={0};//A用来存a中的每一个数 。。。。C用来存a和b的每一位数相加的结果 
        int alen=a.length();
        int blen=b.length();
        int i,j;
        for(i=0;i<=alen;i++)
            A[alen-i]=a[i]-'0';//将a的每一位数转化为整数并逆序存入到A中 
        for(j=0;j<=blen;j++)
            B[blen-j]=b[j]-'0';//b的每一位数转化为整数并逆序存入到B中 
        int clen=1;//记录c的长度 
        int x=0;//记录进位 
        while(clen<=alen||clen<=blen)
        {
            C[clen]=A[clen]+B[clen]+x;//每一位相加之后再加上上一次进位数 
            x=C[clen]/10;//计算本次的进位数 
            C[clen]=C[clen]%10;//进位完了之后的数 
            clen++;
        }
        C[clen]=x;//记得最后要进位到后一位 
        while(C[clen]==0)//找出前缀为0的位置 
           clen--;
        for(int t=clen;t>0;t--)
           cout<<C[t];//逆序输出    
        }
        return 0;
     } 

    这个是c++的做法,万能的Python告诉我们他不存在什么大整数,直接一行代码搞定,(手动滑稽,)

    print(int(input())+int(input()))
    
    
  • 相关阅读:
    背水一战 Windows 10 (61)
    背水一战 Windows 10 (60)
    背水一战 Windows 10 (59)
    背水一战 Windows 10 (58)
    背水一战 Windows 10 (57)
    背水一战 Windows 10 (56)
    背水一战 Windows 10 (55)
    背水一战 Windows 10 (54)
    背水一战 Windows 10 (53)
    背水一战 Windows 10 (52)
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11368968.html
Copyright © 2011-2022 走看看