24h購物| | PChome| 登入
2009-12-05 17:06:33| 人氣1,597| 回應0 | 上一篇 | 下一篇

北市 98 資訊學科能力競賽 1. 海藻(algae)

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : 遞洄 數學 費氏數列

在此感謝BLEED大 無私的分享
0
1
0+1=01
1+01=101
01+101=01101
...類推
用回朔的方式去找

當我們要找某個位置的時候  回朔回去找來源

/**********************************************************/

#include<stdlib.h>
#include<stdio.h>
unsigned long long F[101];
void back (int N,int M)
{
   if(N==1) printf("0\n");
   else if(N==2)printf("1\n");
   else
       {
          if(M>F[N-2]) back(N-1,M-F[N-2]); 
          else back(N-2,M);
       }
}
main()
{
 
  int a,b,N,M,t;
  F[1]=1,F[2]=1;
  for(a=3;a<100;a++)
     F[a]=F[a-1]+F[a-2];
   while(scanf("%d",&t)==1)
       while(t--)
           {
              scanf("%d %d",&N,&M);
              for(a=1;a<100;a++)
                 if(M<=F[a]) break;
              if(a>N) {printf("-1\n");continue;}
              else
                 back(N,M);
           }
   return 0;
}

台長: 來源不明
人氣(1,597) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:2008 TOI 研習營初選 TOI2008 5. 彩色區塊
此分類上一篇:TOI 2008 4. 地道問題 (修正版II)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文