原题链接:川哥的吩咐
这题要用字符串来写了额 但是处理起来比较麻烦 要处理好进位的问题 我的思路是先把进位算出来 再加到字符里面 为了防止数据溢出原有的位数 我还在两个加数的末尾加了个‘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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复