大数相加,不过这类最好是他们的位数相同,便于相加;
#include<iostream>
#include<string>
using namespace std;
string add(string str1, string str2)
{
int len1 = str1.length();
int len2 = str2.length();
if(len1 < len2)
{
for(int i = 0; i < len2-len1; i++)
{
str1 = "0"+str1;
}
}
else
{
for(int i = 0; i < len1-len2; i++)
{
str2 = "0"+str2;
}
}
int len = str1.length();
int p = 0;
int temp = 0;
string str;
for(int i = len-1; i >= 0; i--)
{
temp = str1[i]-'0'+str2[i]-'0'+p;
p = temp/10;
temp %= 10;
str = char(temp+'0') + str;
}
if(p)
str = char(p+'0') + str;
return str;
}
int main()
{
int t;
cin >> t;
string str, sum;
while(t--)
{
sum = "0";
while(cin >> str)
{
if(str == "0")break;
sum = add(sum, str);
}
cout << sum << endl;
if(t)
cout << endl;
}
}
hdu1047
最新推荐文章于 2018-06-04 21:04:43 发布