zoukankan      html  css  js  c++  java
  • 数据结构实训(一)--- 大整数求和

    【问题描述】大整数求和
    用某种程序设计语言进行编程时,可发能需要处理非常大或者运算精度要求非常高的整数(称为大整数),这种大整数用该语言的基本数据类型无法直接表示。处理大整数的一般方法是用数组存储大整数,即开辟一个比较大的整型数组,数组元素代表大整数的一位,通过数组元素的运算模拟大整数的运算。
    已知大整数,,求C=A+B。可以用两个顺序表A和B分别存储两个大整数,用顺序表C存储求和结果。为了便于执行加法运算,可以将大整数的低位存储到顺序表的低端,顺序表的长度表示大整数的位数。
    【输入形式】两个大整数的数位数字。
    【输出形式】按照从高位到低位的顺序输出求和结果C。
    【样例输入】
    987654321
    99997531
    【样例输出】
    1087651852
    【说明】如果从键盘输入大整数,一般用字符数组存储,这样无需对大整数进行分段输入,当然输入到字符数组后需要将字符转换为数字。

    #include<iostream>
    #include<string>
    using namespace std;
    
    const int MaxSize = 1000;
    int main()
    {
        string s1,s2;
        cin >> s1 >> s2;
        int* num1 = new int[MaxSize];
        int* num2 = new int[MaxSize];
        int* num3 = new int[MaxSize+1];
        int len1 = s1.size();
        int len2 = s2.size();
        for(int i=0; i < len1; i++){
            int temp = s1[i] - '0';
            num1[s1.size()-1-i] = temp;
        }
    
        for(int i=0; i < len2; i++){
            int temp = s2[i] - '0';
            num2[s2.size()-1-i] = temp;
        }
    
        int over = 0;
        int length = 0;
        for(int i=0; i<len1||i<len2; i++){
    
            num3[i] = (num1[i] + num2[i] + over)%10;
            over = (num1[i] + num2[i] + over)/10;
            length++;
        }
    
        if(over > 0){
            num3[length] = over;
        }
        else{
            length--;
        }
    
        for(int i=length; i>=0 ; i--){
            cout<<num3[i];
        }
    }
  • 相关阅读:
    python-paramiko
    python函数
    pyinstaller打包py程序为exe文件
    centos7安装python3.6.4
    docker资源限制
    docker网络管理
    docker run命令
    dockerfile解析
    爬虫基础巩固
    爬取图虫网 示例网址 https://wangxu.tuchong.com/23892889/
  • 原文地址:https://www.cnblogs.com/DullRabbit/p/12558690.html
Copyright © 2011-2022 走看看