流水依依

希望朋友们有个好的身体,开开心心工作与学习。

博客园 首页 新随笔 联系 订阅 管理

 

 

 

 

 

 

 

 

 

typedef unsigned long long LL ;
map < int , LL > fibo ;
map < int , LL > ::iterator it ;

LL my_pow(LL x , LL y){
   LL ans = 1 ;
   for(; y; y>>=1 ){
      if(y&1)
         ans *= x ;
      x*=x ;
   }
   return ans ;
}

void init(){
     fibo.clear() ;
     LL x1 = 4 ;
     LL x2 = 3 ;
     fibo[1] =  4  ;
     fibo[2] =  3  ;
     int id = 3 ;
     while(x1 + x2 <= my_pow(2,63)){
         fibo[id] = x1+ x2 ;
         id++ ;
         LL temp = x2 ;
         x2 = x1 + x2 ;
         x1 = temp ;
     }
     fibo[id] = x1+ x2  ;
}

char dfs(int id , LL n){
     if(n <= 7){
         switch(n){
            case 1 :
              return 'T' ;
            case 2 :
              return '.' ;
            case 3 :
              return 'T' ;
            case 4 :
              return '^' ;
            case 5 :
              return '_' ;
            case 6 :
              return '_' ;
            case 7 :
              return '^'  ;
         }
     }
     LL x = fibo[id-1] ;
     if(x < n)
        return dfs(id - 2 , n - x) ;
     else
        return dfs(id - 1 , n ) ;
}

char  gao(LL n){
     init() ;
     int id  ;
     for(it = fibo.begin() ; it != fibo.end() ; it++){
          if(it->second  >= n){
               id = it->first ;
               break ;
          }
     }
     return dfs(id , n) ;
}

  

 

 

posted on 2014-03-06 15:21  流水依依  阅读(259)  评论(0编辑  收藏  举报