POJ2166 Death to Binary?

Posted BBBob

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ2166 Death to Binary?相关的知识,希望对你有一定的参考价值。

  1 /*
  2  POJ2166 Death to Binary?
  3  http://poj.org/problem?id=2116
  4  齐肯多夫定理
  5 
  6  */
  7 #include <cstdio>
  8 #include <algorithm>
  9 #include <cstring>
 10 #include <cmath>
 11 #include <vector>
 12 #include <queue>
 13 #include <iostream>
 14 #include <map>
 15 #include <set>
 16 //#define test
 17 using namespace std;
 18 const int Nmax=1e6+7;
 19 char s[50],a[50],b[50],c[50],tmp[50],t[50];
 20 long long f[50];
 21 vector<long long> v;
 22 vector<long long>::iterator it;
 23 long long scan()
 24 {
 25     char c=getchar();   
 26     while(c== ||c==\n)
 27         c=getchar();
 28     if(c==-1)
 29         return -1;
 30     int sz=0;
 31     while(c>=0 && c<=1)
 32     {
 33         s[++sz]=c;
 34         c=getchar();
 35     }
 36     long long x=0LL;
 37     for(int i=1;i<=sz;i++)
 38     {
 39         x+=1LL*(s[i]-0)*f[sz-i];
 40     }
 41     return x;
 42 }
 43 int id(long long x)
 44 {
 45     int now=upper_bound(v.begin(),v.end(),x)-v.begin();
 46     if(now!=0)
 47         now--;
 48     return now;
 49 }
 50 char* get(long long x)
 51 {
 52    int sz=0;
 53    for(int i=0;i<=40;i++)
 54        tmp[i]=0;
 55    //printf("\n");
 56    while(x>0)
 57    {
 58        //printf("x:%lld\n",x);
 59        tmp[id(x)]=1;
 60        sz=max(sz,id(x));
 61        //printf("%d ",id(x));
 62        //printf("%lld",f[id(x)]);
 63        x-=f[id(x)];
 64    }
 65    //printf("\n");
 66    //for(int i=0;i<=40;i++)
 67        //printf("%c",tmp[i]);
 68    //printf("\n");
 69    
 70    //printf("%s\n",tmp);
 71  
 72    for(int i=sz;i>=0;i--)
 73        t[sz-i]=tmp[i];
 74    t[sz+1]=\0;
 75    return t;
 76 }
 77 void print()
 78 {
 79     int n=strlen(c);
 80     int sum=n+2;
 81     int an=strlen(a);
 82     int bn=strlen(b);
 83     for(int i=1;i<=sum-an;i++)
 84         putchar( );
 85     printf("%s\n",a);
 86     putchar(+);
 87     for(int i=1;i<=sum-bn-1;i++)
 88         putchar( );
 89     printf("%s\n",b);
 90     putchar( );
 91     putchar( );
 92     for(int i=1;i<=n;i++)
 93         putchar(-);
 94     putchar(\n);
 95     putchar( );
 96     putchar( );
 97     printf("%s\n\n",c);
 98 }
 99 int main()
100 {
101     #ifdef test
102     #endif
103     //freopen("poj2166.in","r",stdin);
104     f[0]=1LL;
105     f[1]=2LL;
106     for(int i=2;i<41;i++)
107         f[i]=f[i-1]+f[i-2];
108     for(int i=0;i<=40;i++)
109         v.push_back(f[i]);
110     while(1)
111     {
112         long long x=scan();
113         //printf("%lld\n",x);
114         if(x==-1)
115             break;
116         long long y=scan();
117         if(y==-1)
118             break;
119         long long ans=x+y;
120         //long long ttt=40LL;
121         //while(ttt>0)
122         //{
123             //printf("%d\n",id(ttt));
124             //printf("%lld\n",f[id(ttt)]);
125             //ttt-=f[id(ttt)];
126         //}
127         //strcpy(a,get(40LL));
128         //printf("%s\n",a);
129         strcpy(a,get(x));
130         strcpy(b,get(y));
131         strcpy(c,get(ans));
132         print();
133     }
134     return 0;
135 }

 

以上是关于POJ2166 Death to Binary?的主要内容,如果未能解决你的问题,请参考以下文章

109. Convert Sorted List to Binary Search Tree

poj3122 binary search 实数区间

代写java binary search trees|代写Java Data Structures CS作业|代写Java作业|Java 编程作业代写|Java作业代写

POJ-2499-Binary Tree-思维题

笛卡尔树 POJ ——1785 Binary Search Heap Construction

[POJ 1430] Binary Stirling Number