大整数加法

alt

解题思路:

  • 不需要考虑再创个字符串c来放答案,这样就要考虑如何将多出来的部分接到c上,很麻烦,可以直接加在a(长的字符串上)
  • 写的时候一直考虑像199+9这种要连续进位的怎么办,其实只要将a,b两个字符串的值分开加就好了

解题代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string a,b;	
	while(cin>>a>>b){
		int s=a.size(),t=b.size();
		if(s<t) {swap(a,b);swap(s,t);}//swap也适用于char数组
		reverse(a.begin(),a.end());//只有反过来下面才可以用同一个i
		reverse(b.begin(),b.end());
		int cnt=0;
		for(int i=0;i<s;i++){
			int k=a[i]-'0'+cnt;//分开加就不用考虑如果超出b的范围怎么办
			if(i<t) k+=b[i]-'0';//如果超出b的范围就不加b的了
			a[i]=k%10+'0';
			cnt=k/10;
		}
		if(cnt>0) a=a+"1";
		reverse(a.begin(),a.end());
		cout<<a<<endl;
	}
	return 0;
}