12A:蜜蜂
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。其中,蜂房的结构如下所示。其中。如果蜜蜂从蜂房1开始,则只能爬到蜂房2或者蜂房3。如果从蜂房4开始,则只能爬到蜂房5或者蜂房6。
- 输入
- 输入数据的第一行是一个整数N,表示测试实例的个数。
然后是N行数据,每行包含两个整数a和b。
(0 < a < b < 50) - 输出
- 对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
- 样例输入
-
2 1 2 3 6
- 样例输出
-
1 3
- 提示
- 答案需要使用long long表示
1 #include<iostream> 2 using namespace std; 3 long long d[60]; 4 long long cal(int n){ 5 if(d[n]) return d[n]; 6 d[n] = cal(n-1) + cal(n-2); 7 return d[n]; 8 } 9 int main(){ 10 int n, a, b; 11 cin>>n; 12 d[0] = 1; d[1] = 1; 13 while(n--){ 14 cin>>a>>b; 15 long long ans = cal(b-a); 16 cout<<ans<<endl; 17 } 18 return 0; 19 }
备注:一道真正的水题。就是上楼梯披了个马甲,每一步要不然走1要不然走2,跟蜂房编号根本没关系,只看从几走到几就行了。注意要记忆化,要不然超时。