原题链接:川哥的吩咐
解题思路:
大数加法,常规题,用java肯定最方便(毕竟现成的库在那里),在这里还是用C++写吧。
字符串输入并且字符串输出,用字符串模拟加法运算的过程,从最后一位加起,用flag表示进位,每一次对应位数相加的结果进入新的字符串。(字符和数字的转化用'0')。
当两个字符串位数不一样时,较长的那个还要继续加,最后,考虑到得出的结果是否还有一次进位,单独用if判断一下。
最后,反转字符串str(肯定要反转啊,相加的结果是依次加进去的),利用reverse函数。
参考代码:
#include<iostream> #include<string> #include<algorithm> using namespace std; string add(string a,string b){ int len1=a.size()-1,len2=b.size()-1; string str; int flag=0,sum=0; while(len1>=0&&len2>=0){ sum=(a[len1--]-'0')+(b[len2--]-'0')+flag; flag=sum/10; sum=sum%10; str+=char(sum+'0'); } while(len1>=0){ sum=flag+(a[len1--]-'0'); flag=sum/10; sum=sum%10; str+=char(sum+'0'); } while(len2>=0){ sum=flag+(b[len2--]-'0'); flag=sum/10; sum=sum%10; str+=char(sum+'0'); } if(flag)str+=char(flag+'0'); reverse(str.begin(),str.end()); return str; } int main(){ string a,b; while(cin>>a>>b) cout<<add(a,b)<<endl; return 0; }
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复