• C语言:大数求和


     


    点击获取题目


     

    1410: [蓝桥杯]高精度加法

    时间限制: 1 Sec  内存限制: 256 MB
    提交: 28  解决: 20
    [状态] [提交] [命题人:外部导入]

    题目描述

    输入两个整数ab,输出这两个整数的和。ab都不超过100位。

    输入

    输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b
    两个整数都不超过100位,两数的最高位都不是0。

    输出

    输出一行,表示b的值。

    样例输入 Copy

    20100122201001221234567890
    2010012220100122

    样例输出 Copy

    20100122203011233454668012


    原理:先分别用字符串数组a,b把数存起来,然后转换成整数类型的数组,【注意数组长度一定要大于max(strlen(a),strlen(b))+1】最好把字符串的尾巴作为数字数字的第一项,倒着存起来,然后再相加。
    最后再判断一下,首位是否为0:如果为0则不输出,i从1开始一个一个输出;否则,i从0开始输出。
    C++代码
     1 #include <stdio.h>
     2 #include <math.h>
     3 #include<string.h>
     4 #include<bits/stdc++.h>
     5 using namespace std;
     6 int main()
     7 {
     8     char a[200],b[200];
     9     scanf("%s%s",a,b);
    10     int la,lb;
    11     la=strlen(a),lb=strlen(b);
    12     int i;
    13     int l=la;
    14     if(lb>la)
    15     {
    16         l=lb;
    17     }
    18     l;
    19     int n[l+1],m[l+1];
    20     memset(n,0,sizeof(n));
    21     memset(m,0,sizeof(m));
    22     int c[l]={0};
    23     for(i=0;i<la;i++)
    24     {
    25         n[i]=a[la-1-i]-'0';
    26     }
    27     for(i=0;i<lb;i++)
    28     {
    29         m[i]=b[lb-1-i]-'0';
    30     }
    31     for(i=0;i<l;i++)
    32     {
    33         c[i]=c[i]+n[i]+m[i];
    34         c[i+1]=c[i]/10;
    35         c[i]%=10;
    36     }
    37     if(c[l]!=0)
    38     {
    39         printf("1");
    40     }
    41     for(i=l-1;i>=0;i--)
    42     {
    43         printf("%d",c[i]);
    44     }
    45 }
  • 相关阅读:
    《团队-团队编程项目中国象棋-成员简介及分工》
    团队-编程项目 中国象棋-需求分析
    结对编程:贪吃蛇项目
    软件工程进阶
    JAVA第二次作业
    JAVA第一次作业
    JS解决重复绑定问题以及获取事件
    ECMAScript5学习笔记--第十四章 程序
    ECMAScript5学习笔记--第十三章 函数定义
    ECMAScript5学习笔记--第十二章 语句
  • 原文地址:https://www.cnblogs.com/jackwang-sparrow/p/12244282.html
Copyright © 2020-2023  润新知