763 -
(WA) many times... but still don't know why. maybe missing the last linebreak.
(CE) Cannot use printf in UVAonlinejudge without #include<stdio.h>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <list>
#define sz(k) (int)(k).size()
#define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define forr(i,r) for(int i=0;i<r;i++)
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define drep(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define nl(c) c<<endl;
#define db(cout,c) tr(c,it){cout<<" "<<*it;};nl(cout);
#define inf24 (int)(1<<23-1)
#define inf32 (int)(1<<31-1)
#define inf64 (long long)(1LL<<63-1)
using namespace std;
#define NN 10240
unsigned long long fb[NN+NN+2];
int sum[(NN+NN+2)];
unsigned long long cksum1,cksum2;
int main(int argc, char *argv[])
{
//fb[0]=1;fb[1]=2;
//forr(i,NN+NN)fb[i+2]=fb[i]+fb[i+1];
int T=0,stage=1;
string S1,S2;
while(cin>>S1>>S2)
{
if(T>0)cout<<endl;
T++;
//cout<<"S1="<<S1<<endl;
//cout<<"S2="<<S2<<endl;
forr(i,NN+NN)sum[i]=0;
forr(i,S1.size())sum[S1.size()-i-1]=(S1[i]-'0');
forr(i,S2.size())sum[S2.size()-i-1]+=(S2[i]-'0');
/*
cksum1=0;
forr(i,NN+NN)cksum1+=sum[i]*fb[i];
stage=1;
drep(i,NN+NN-1,0){
if(stage==1)if(sum[i]>=1)stage=2;
if(stage==2)
cout<<sum[i];
}
cout<<" ("<<cksum1<<")";
cout<<endl;
*/
stage=1;
while(stage==1)
{
stage=2;
forr(i,NN+NN-2)
{
if(sum[i]>=1&&sum[i+1]>=1)
{
sum[i]--;
sum[i+1]--;
sum[i+2]++;
stage=1;
}
else if(sum[i]>=2&&i>1)
{
sum[i]--;
sum[i]--;
sum[i+1]++;
sum[i-2]++;
stage=1;
}
else if(sum[1]>=2)
{
sum[1]-=2;
sum[2]++;
sum[0]++;
stage=1;
}
else if(sum[0]>=2)
{
sum[0]-=2;
sum[1]++;
stage=1;
}
}
}
stage=1;
drep(i,NN+NN-1,0){
if(stage==1)
if(sum[i]>=1)stage=2;
if(stage==2)
cout<<sum[i];
}
if(stage==1)cout<<"0";
stage=2;
//cksum2=0;
//forr(i,NN+NN)cksum2+=sum[i]*fb[i];
//cout<<" ("<<cksum2<<")";
cout<<endl;
// printf("\r\n");
};
return 0;
}
No comments:
Post a Comment