Big String

 

                                    

n

0

1

2

3

4

 

fib數列

7

10

17

27

44

n

n=4

n=8

n=14

n=21

n=42

n=55

n=60

-fib

/

0

1

2

3

1

4

1

4

1

n

 

1

4

4

5

1

6

 

完整程序:

#include<iostream>
#include<algorithm>
#include <stdio.h>
using namespace std;
#define LEN 88
string base="T.T^__^";
int main()
{
  //將斐波那契數列(Fibonacci)在2^63-1範圍內的數全部計算出來
long long int f[LEN];
f[0]=7;
f[1]=10;
for(int i=2;i<LEN;i++)
    f[i]=f[i-1]+f[i-2];
long long int n;
while(cin>>n){
    //對於每一個n,減去小於n的最大斐波那契數
    while(n>7){
        int i=0;
        while(i<LEN&&f[i]<n)
            i++;
        n-=f[i-1];
    }
    //n中剩下的值,就是該字符在base中的位置
    cout<<base[n-1]<<endl;
}
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章