Problem Description
有一隻經過訓練的蜜蜂隻能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
其中,蜂房的結構如下所示。
Input
輸入資料的第一行是一個整數N,表示測試執行個體的個數,然後是N 行資料,每行包含兩個整數a和b(0<a<b<50)。
Output
對于每個測試執行個體,請輸出蜜蜂從蜂房a爬到蜂房b的可能路線數,每個執行個體的輸出占一行。
Sample Input
2
1 3
3 6
Sample Output
1
3
分析:第一眼看到這道題目,覺得有點奇怪,不知道該怎麼計算。後來發現這其實就是斐波那契數列1,1,2,3,5,8......。第n項等于第n-1項和n-2項之和。隻要明白了這個知識點,這道題目做起來就很輕松了。另外,由于菲波那切數列在40多項之後數字會變得非常大,是以不能使用int型資料。很顯然這裡應該使用__int,__int(兩個下劃線“_”加int)可以表示64位的整數。若不使用__int則會出現“The time Limited Exceed”錯誤。
示例代碼:
#include<stdio.h>
#include<stdlib.h>
int main() {
int num;
__int64 results[50]; //記錄路線條數
int start, end;
results[0] = 1;
results[1] = 1;
for(int i = 2; i < 50; i++) {
results[i] = results[i - 1] + results[i - 2];
}
scanf("%d", &num);
while(num--) {
scanf("%d %d", &start, &end);
printf("%I64d\n", results[end - start]);
}
system("pause");
return 0;
}