Saturday 21 March 2009

HOJ ( acm.hdu.edu.cn ) 1047





#include <iostream>
#include <string>
using namespace std;

inline int c2i(char c){return c-48;}
inline char i2c(int i){return i+48;}

string add(string v1,string v2)
{
size_t l1=v1.size(),l2=v2.size();
if (l1<l2)
{
v1.swap(v2);
l1=v1.size(),l2=v2.size();
}
string temp;
size_t l=l1+1;
temp.resize(l);
int t=0,x;
while (l2--)
{
l1--;
l--;
x=c2i(v1[l1])+c2i(v2[l2])+t;
t=x/10;
temp[l]=i2c(x%10);
}
while (l1--)
{
l--;
if(t)
{
x=c2i(v1[l1])+t;
t=x/10;
temp[l]=i2c(x%10);
}
else temp[l]=v1[l1];
}
if (t) temp[--l]=i2c(t);
return (t?temp:temp.substr(1,l1));
}

int main()
{
string s1,s2;
int n;
cin>>n;
for(int i=1;i<n;i++)
{
cin>>s1;
if(s1!="0")
for(;;)
{
cin>>s2;
if(s2=="0")break;
s1=add(s1,s2);
}
cout<<s1<<endl<<endl;
}
cin>>s1;
if(s1!="0")
for(;;)
{
cin>>s2;
if(s2=="0")break;
s1=add(s1,s2);
}
cout<<s1<<endl;
return 0;
}

No comments:

Post a Comment