HDU OJ 2044.一隻小蜜蜂...
阿新 • • 發佈:2019-01-25
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; }