Death to Binary? POJ - 2116

原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;
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页