题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044
解题思路:
把从a到b转化到从1到(b-a+1)
用dp[i]表示从1到i的方法数,i可以从i-1,i-2直接跳过来,所以dp[i] = dp[i-1]+dp[i-2]
代码:
#include<cstdio>
#define ll long long
ll dp[55];///表示1->i的方法
void pt()
{
dp[2] = 1;
dp[3] = 2;
for (int i=4;i<50;i++) dp[i] = dp[i-1]+dp[i-2];
}
int main()
{
pt();
int a,b,T;
scanf("%d",&T);
while (T--){
scanf("%d %d",&a,&b);
printf("%lld\n",dp[b-a+1]);
}
return 0;
}