最顶级的算法,往往只需要最底层的逻辑
思路:
- 自己实现十进制按位加
- 两个整数位数不一致,短的在前面补0
- 注意进位
#include<bits/stdc++.h> using namespace std; void biggerstr(string &a,string &b) { int m=a.size(); int n=b.size(); if(m<n){ string tmp = a; a = b; b = tmp; } } int main(void) { string str1; string str2; while(cin>>str1>>str2){ biggerstr(str1, str2);//保证str1是更长的那个 int m=str1.size(); int n=str2.size(); int jin=0;//进位标志 string ret ; for(int i=0;i<(m-n);++i)str2.insert(str2.begin(), '0');//短的前面填0 for(int i=m-1;i>=0;--i){//简单的十进制加法规则 int tmp = str1[i]-'0'+str2[i]-'0'+jin; if(tmp>=10){ jin=1; tmp %= 10; }else{ jin=0; } ret.insert(ret.begin(), tmp+'0'); } if(jin)ret.insert(ret.begin(), '1');//注意进位 cout<<ret<<endl; } return 0; }



京公网安备 11010502036488号