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()))
    
    
  • 相关阅读:
    Docker pull镜像过慢解决方法
    BUUCTF pwn一分题目
    SROP例题
    2020 NUPCTF pwn题目
    BJD4th pwn pi
    0RAYS元旦招新赛
    exit_hook在pwn题中的应用
    eclipse导包导不进来
    java算法题每日一练01,java入门简单算法题小练
    解决chrome无法启用印象笔记-剪藏功能
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11368968.html
Copyright © 2011-2022 走看看