任意长度加法的实现,没有考虑负数的情况。
#include
<
iostream
>
#include < stack >
#include < string >
using namespace std;
int inline cti( char c)
{
return (c - ' 0 ' );
}
int main()
{
string a,b,max,min;
int i, len ,cr ,tmp;
stack < int > si;
while (cin >> a >> b)
{
max = a.length() > b.length() ? a : b ;
min = a.length() > b.length() ? b : a ;
len = max.length() - min.length() ;
cr = 0 ;
for ( i = min.length() - 1 ; i >= 0 ; i -- ) {
tmp = cr + cti(min[i]) + cti(max[len + i]);
cr = tmp / 10 ;
si.push(tmp % 10 );
}
for (i = len - 1 ; i >= 0 ; i -- ) {
tmp = cr + cti(max[i]);
cr = tmp / 10 ;
si.push(tmp % 10 );
}
while (cr) {
si.push(cr % 10 );
cr /= 10 ;
}
while ( ! si.empty()) {
cout << si.top() ;
si.pop();
}
cout << endl;
}
}
#include < stack >
#include < string >
using namespace std;
int inline cti( char c)
{
return (c - ' 0 ' );
}
int main()
{
string a,b,max,min;
int i, len ,cr ,tmp;
stack < int > si;
while (cin >> a >> b)
{
max = a.length() > b.length() ? a : b ;
min = a.length() > b.length() ? b : a ;
len = max.length() - min.length() ;
cr = 0 ;
for ( i = min.length() - 1 ; i >= 0 ; i -- ) {
tmp = cr + cti(min[i]) + cti(max[len + i]);
cr = tmp / 10 ;
si.push(tmp % 10 );
}
for (i = len - 1 ; i >= 0 ; i -- ) {
tmp = cr + cti(max[i]);
cr = tmp / 10 ;
si.push(tmp % 10 );
}
while (cr) {
si.push(cr % 10 );
cr /= 10 ;
}
while ( ! si.empty()) {
cout << si.top() ;
si.pop();
}
cout << endl;
}
}