1. 程式人生 > >HDU OJ 2044.一隻小蜜蜂...

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

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