高精度加法。输入两个正整数,求它们的和。

  • 算法分析
    • 升级版代码

算法分析

输入两个数到两个变量中,然后用赋值语句求它们的和,输出。但是,我们知道,在C++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,上述算法显然不能求出精确解,因此我们需要寻求另外一种方法。在读小学时,我们做加法都采用竖式方法,这样我们方便写出两个整数相加的算法。
an……a3 a2 a1
bn……b3 b2 b1
+————————
cn……c3 c2 c1
我们用数组a、b分别存储加数和被加数,用数组c存储结果。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main ()
{char a1[100],b1[100];int a[100],b[100],c[100],lena,lenb,lenc,i,x;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));gets(a1);gets(b1);//输入加数和被加数lena=strlen(a1);lenb=strlen(b1);for(i=0;i<=lena-1;i++){//把加数放入a数组a[lena-i]=a1[i]-48;                     //思考:为什么要-48?}for(i=0;i<=lenb-1;i++){//把加数放入b数组b[lenb-i]=b1[i]-48;                     //思考:为什么要-48?}lenc=1;x=0;while(lenc<=lena||lenc<=lenb){c[lenc]=a[lenc]+b[lenc]+x;//两数相加x=c[lenc]/10;c[lenc]%=10;lenc++;}c[lenc]=x;if(c[lenc]==0){//处理最高位lenc--;}for(i=lenc;i>=1;i--){//输出结果cout<<c[i];}cout<<endl;return 0;
}

升级版代码

#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main ()
{string a1,b1;bool temp=true;int a[100],b[100],c[100],lenc=1,x=0;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));cin>>a1>>b1;for(int i=0;i<=a1.length()-1;i++) a[a1.length()-i]=a1[i]-'0';for(int i=0;i<=b1.length()-1;i++) b[b1.length()-i]=b1[i]-'0';while(lenc<=a1.length()||lenc<=b1.length()){c[lenc]=a[lenc]+b[lenc]+x;x=c[lenc]/10;c[lenc]%=10;lenc++;}c[lenc]=x;for(int i=lenc;i>=1;i--){if(c[i]==0&&temp) continue;else temp=false;cout<<c[i];}if(c[1]==0) cout<<0<<endl;cout<<endl;return 0;
}

《信息学奥赛一本通》 高精度加法。输入两个正整数,求它们的和。相关推荐

  1. 信息学奥赛一本通(1397:简单算术表达式求值)

    1397:简单算术表达式求值 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 13874     通过数: 10359 [题目描述] 两位正整数的简单算术运算(只考 ...

  2. 信息学奥赛一本通(c++):1124:矩阵加法

    信息学奥赛一本通(c++):1124:矩阵加法 一.题目 1124:矩阵加法 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 输入两个n行m列的矩阵A和B,输出 ...

  3. 信息学奥赛一本通C++语言-----1124:矩阵加法

    [题目描述] 输入两个nn行mm列的矩阵AA和BB,输出它们的和A+BA+B. [输入] 第一行包含两个整数nn和mm,表示矩阵的行数和列数(1≤n≤100,1≤m≤100)1≤n≤100,1≤m≤1 ...

  4. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  5. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  6. 信息学奥赛一本通 1356:计算(calc)

    [题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...

  7. 信息学奥赛一本通(1101:不定方程求解)

    1101:不定方程求解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 18175     通过数: 14383 [题目描述] 给定正整数a,b,c.求不定方程 a ...

  8. 信息学奥赛一本通(1098:质因数分解)

    1098:质因数分解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 33021     通过数: 16969 [题目描述] 已知正整数n是两个不同的质数的乘积,试 ...

  9. Knight Moves(信息学奥赛一本通-T1450)

    [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 3 行描述 ...

最新文章

  1. python动态执行代码_第6.6节 Python动态执行小结
  2. C#趣味程序---车牌号判断
  3. [渝粤教育] 西南科技大学 高级英语(2) 在线考试复习资料
  4. r软件时间序列分析论文_高度比较的时间序列分析-一篇论文评论
  5. python爬虫爬汽车图片_Python快速爬取车标网图片,以后不要说这什么车你不认识了!...
  6. python中的get函数_python之函数用法get()
  7. Eclipse安装Alibaba Cloud Toolkit并连接阿里云云数据库
  8. javax.comm的API
  9. Android studio 怎么使用已经下载好的Android SDK ?
  10. 学习进度总结----蔡强130201201
  11. ubuntu 16.04软件源
  12. 滴滴估值630亿美元开启新一轮融资,2021年前上市;索信达新三板退市后二次“流血”冲击香港IPO;蜻蜓FM COO肖轶离职...
  13. OSI 参考模型介绍
  14. BZOJ 5109 [CodePlus 2017]大吉大利,晚上吃鸡!
  15. FR-报表应用-分组报表-动态显示N个分组
  16. Guava基本工具包Base:Null和字符串分割(Splitter)、拼接(Joiner)处理
  17. 贫富分化是生产力发展的必然趋势 zz
  18. SMARTS决策引擎实战练习
  19. 计算机专业研究生阶段有几大研究方向可以选择
  20. C# 每天定时执行任务(每天凌晨1点执行)

热门文章

  1. HDU 1043 Eight(八数码)
  2. .net得到ip(引)
  3. 广东金融学院计算机期末考试,关于2018-2019学年第二学期录入期末成绩的通知
  4. java反射总结_java反射总结
  5. linux父子进程字写父读无效,linux父子进程
  6. VS2008 Tips #008 如何创建ASP.NET Web 用户控件并包含在Web 页面中
  7. 用例设计:判定表驱动法
  8. 解决element-ui的表格设置固定栏后,边框线消失的bug
  9. 【bzoj3442】学习小组 费用流
  10. jQuery ajax - getScript() 方法