一个愚蠢的写法
利用字符串保留数字,
首先反转,低位在字符串之前相加。
最终的结果是一个不断扩展的字符串,这个可能对速度有影响
C++ 代码
#include <iostream>
#include <string>
using namespace std;
void reverse(string& s)
{
int l = 0, r = s.size() - 1;
while(l<r)
swap(s[l++],s[r--]);
}
char adding(char a, char b, int& next)
{
int val = a - '0' + b - '0' + next;
next = val/10;
val = val%10;
return (val + '0');
}
string adding(string& s1, string& s2)
{
string re = "";
reverse(s1);
reverse(s2);
int l = 0;
int next = 0;
while(l<s1.size() && l<s2.size())
{
re += adding(s1[l],s2[l],next);
++l;
}
while(l<s1.size())
{
re += adding(s1[l],'0',next);
++l;
}
while(l<s2.size())
{
re += adding('0',s2[l],next);
++l;
}
if(next > 0)
re += ('0' + next);
reverse(re);
cout<<re<<std::endl;
return re;
}
int main()
{
string s1,s2;
cin>>s1>>s2;
// std::cout<<s1<<"\n"<<s2;
adding(s1,s2);
return 0;
}