原oj点击打开链接
vj点击打开链接
这个题 说实话 我wa 了很多发 wa到怀疑人生 好不容易看别人的代码 不wa了 结果 给我出来一个 Presentation Error(格式错误) 搞得我头皮 发麻 主要了解一下的就是 前面需要 的空格 以及 每行需要 最后答案的 长度 这个就可以了 具体的题意 谷歌一下就行 感觉这道题 有点逗 ~~~~
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
long long int mm[60];
string a,b,c;
long long int lena,lenb,suma,sumb,sumc,lenc;
void init()
{
mm[0]=1,mm[1]=2;
for(int i=2; i<=55; i++)
mm[i]=mm[i-1]+mm[i-2];
}
long long int gett(long long int len,string t)
{
long long int sum=0;
for(int i=0; i<len; i++)
{
if(t[i]=='1')
{
sum+=mm[i];
}
}
return sum;
}
void change(long long int aa,string &s)
{
int i;
for(i=50; i>=0; i--)
{
if(aa>=mm[i])
break;
}
//printf("%d\n",i);
for(int t=i;t>=0; t--)
{
if(aa>=mm[t])
s+='1',aa-=mm[t];
else
s+='0';
}
if(i<0)
s+='0';
}
int main()
{
init();
while(cin>>a>>b)
{
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
lena=a.size();
lenb=b.size();
lenc=lena+lenb;
suma=gett(lena,a);
sumb=gett(lenb,b);
//printf("%d %d\n",suma,sumb);
sumc=suma+sumb;
a.clear();
b.clear();
change(suma,a);
// printf("1\n");
change(sumb,b);
change(sumc,c);
printf(" ");for(int i=0;i<c.size()-a.size();i++)printf(" ");cout<<a<<endl;
printf("+ ");for(int i=0;i<c.size()-b.size();i++)printf(" ");cout<<b<<endl;
printf(" ");for(int i=0; i<c.size(); i++)printf("-");printf("\n");
printf(" "),cout<<c<<endl;
printf("\n");
a.clear();
b.clear();
c.clear();
}
return 0;
}