HDu 2044一只小蜜蜂...

一只小蜜蜂...

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 59682    Accepted Submission(s): 21633


Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。

 

Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0
 

Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
 

Sample Input
 
   
2 1 2 3 6
 

Sample Output
 
   
1

3

解析:想知道从a到b可能的路线数就需要知道到达b-2的路线数和b-1的路线数,即f(b)=f(b-1)+f(b-2)斐波拉契数列递推式(n可以达到51(我这里达到55),所需要注意的是斐波拉契数列的递推式求出的结果可能会溢出,因此需要用到long long型(DEV)或__int64型(VC)的数据类型)

#include 

int main()
{
	long long num[55]={1,1};
	int n,a=0,b=0,i; 
	
	for(i=2;i<55;i++){
		num[i]=num[i-1]+num[i-2];
	}
	while(~scanf("%d",&n))
	{
		while(n--)
		{
			scanf("%d%d",&a,&b);
			printf("%I64d\n",num[b-a]);
		}
	}
	
	return 0;	
} 

你可能感兴趣的:(hdu,oj)