天天看點

HDU OJ 2044.一隻小蜜蜂...

Problem Description

有一隻經過訓練的蜜蜂隻能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。

其中,蜂房的結構如下所示。

HDU OJ 2044.一隻小蜜蜂...

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;
}