两个正的大数相加,HDOJ的每个case输出要隔一个空行,即输出两个空行,最后一次只输出一个空行
#include<iostream>
#include<deque>
#include<cstdio>
#include<algorithm>
#include<functional>
using namespace std;
void output(deque<int>&x){for(int i=0;i<x.size();++i)cout<<x[i];}
void input(deque<int>&s)
{
char c;
while(c=cin.get(),c!=' '&&c!='\n')s.push_back(c-'0');
}
deque<int> add(deque<int>a,deque<int>b)
{
if(b.size()>a.size())swap(a,b);
transform(b.rbegin(),b.rend(),a.rbegin(),a.rbegin(),plus<int>());
int carry=0;
for(int i=a.size()-1;i>=0;--i){int t=carry+a[i];a[i]=t%10,carry=t/10;}
if(carry)a.push_front(carry);
return a;
}
int main()
{
int n;cin>>n;cin.get();
for(int i=1;i<=n;++i)
{
printf("Case %d:\n",i);
deque<int> a,b,c;
input(a);input(b);c=add(a,b);
output(a); cout<<" + ";
output(b); cout<<" = ";
output(c); cout<<endl;
if(i!=n)cout<<endl;
}
}