A + B Problem II

两个正的大数相加,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;
    }
}


你可能感兴趣的:(A + B Problem II)