题解 | #高精度整数加法#

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int main() {
string s1,s2;
cin>>s1>>s2;
int i=s1.size()-1;
int j=s2.size()-1;
int flag=0;//flag是进位
vector<int>res;
for(i,j;i>=0||j>=0;i--,j--){
int num1=i>=0?s1[i]-'0':0;//转化成数字计算。如果i或者j>0,就直接转化为对应的数字,如果其中一个<0了,说明对应的字符串加完了,另一个还没加完,就要用0来填补数字的空位
int num2=j>=0?s2[j]-'0':0;
if(num1+num2+flag>=10){
    res.push_back((num1+num2-10)+flag);
    flag=1;
}
else{
    res.push_back(num1+num2+flag);
    flag=0;
}
//cout<<"i="<<i<<",j="<<j<<",num1="<<num1<<",num2="<<num2<<",flag="<<flag<<endl;;
}
if(flag==1){res.push_back(flag);}
reverse(res.begin(),res.end());
for(int i=0;i<res.size();i++){
    cout<<res[i];
}
cout<<endl;
}
// 64 位输出请用 printf("%lld")

要注意做加法时判断循环的条件,i和j为想加的两个字符串的字符下标,只要其中一个还没走完就要继续做加法,比如说i=2,j=0,下一个循环应该计算s1[1]+0的值了,循环继续,所以条件是||

全部评论

相关推荐

2025-11-29 19:59
已编辑
沧州师范学院 前端工程师
smile丶snow:学校可以放在最后面。只保留一个专业和本科就行了。主修课程什么可以去掉。一个项目太少了可以去github看看再加一个
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务