原题链接:川哥的吩咐
这题要用字符串来写了额 但是处理起来比较麻烦 要处理好进位的问题 我的思路是先把进位算出来 再加到字符里面 为了防止数据溢出原有的位数 我还在两个加数的末尾加了个‘0’ 注意事项: 小心点写 别急慢慢来
#include<iostream> #include<cstring> using namespace std; void f(string str1,string str2) { string str3="",str4="",str5 (1000,' '); for(int i=str1.length()-1;i>=0;i--) { str3+=str1[i]; } for(int i=str2.length()-1;i>=0;i--) { str4+=str2[i]; } int len1=str3.length(); int len2=str4.length(); str3+='0'; str4+='0'; //cout<<str4<<endl; //cout<<str3<<endl; if(len1<=len2) { for(int i=0;i<len1;i++) { if((str3[i]-'0')+(str4[i]-'0')>=10) { str4[i+1]+=1; } str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10; } for(int i=len1;i<len2;i++) { if((str4[i]-'0')>=10) { str4[i+1]+=1; } str5[i]='0'+(str4[i]-'0')%10; } //cout<<str4[len2]<<endl; if(str4[len2]!='0') str5[len2]=str4[len2]; } else { for(int i=0;i<len2;i++) { if((str3[i]-'0')+(str4[i]-'0')>=10) { str3[i+1]+=1; } str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10; } for(int i=len2;i<len1;i++) { if((str3[i]-'0')>=10) { str3[i+1]+=1; } str5[i]='0'+(str3[i]-'0')%10; } //cout<<str3[len1]<<endl; if(str3[len1]!='0') str5[len1]=str3[len1]; } for(int i=str5.length()-1;i>=0;i--) { if(str5[i]!=' ') cout<<str5[i]; } cout<<endl; } int main() { string str1,str2; while(cin>>str1>>str2) { f(str1,str2); } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复