Pinary 数 (Pinary,Seoul 2005,LA 3357)

 1 #include <iostream>
 2 #include <string.h>
 3 #include <string>
 4 #include <fstream>
 5 #include <algorithm>
 6 #include <stdio.h>
 7 #include <vector>
 8 #include <queue>
 9 #include <set>
10 #include <cmath>
11 using namespace std;
12 const double eps = 1e-8;
13 const double pi=acos(-1.0);
14 const int INF=0x7fffffff;
15 unsigned long long uINF = ~0LL;
16 #define MAXN 10000007
17 typedef long long LL;
18 int a[10000];
19 void init()
20 {
21     a[1]=a[2]=1;
22     for(int i=3;i<=40;i++)
23     a[i]=a[i-1]+a[i-2];
24 }
25 string get(string x,int n)
26 {
27     if(n==0)return x;
28     for(int i=1;i<=40;i++)
29         if(n<=a[i])
30         {
31             x[x.length()-i]='1';
32             return get(x,n-1);
33         }
34         else n-=a[i];
35 }
36 int main()
37 {
38     init();
39     int n,T;scanf("%d",&T);
40     while(T--)
41     {
42         scanf("%d",&n);
43         string ans="1";
44 
45         for(int i=1;i<=40;i++)
46         if(n<=a[i])
47         {
48             for(int j=1;j<i;j++)ans+='0';
49            // cout<<ans<<endl;system("pause");
50             ans=get(ans,n-1);
51             break;
52         }
53         else n-=a[i];
54         cout<<ans<<endl;
55     }
56 
57     return 0;
58 }

斐波那契数列~~

posted @ 2013-07-25 11:30  TO_Asia  阅读(163)  评论(0编辑  收藏  举报