1.题目链接。题意其实十分的明显,只能向右走,所以就是只能是由两个方向转移,n-1和n-2.这是明显的斐波那契的特征。知道这些其实还是不够的,为什么?因为输入的是两位数啊,不是仅仅从起点走到当前点,其实这等价于二者之差的斐波那契数(为什么?可以自己证明一下,应该还是很简单的)。分析好了这写,这题已经解决了。
#include<iostream>
using namespace std;
#define ll long long
ll dp[100];
#pragma warning(disable:4996)
int main()
{
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i < 100; i++)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
int T;
scanf("%d", &T);
while (T--)
{
int a, b;
scanf("%d%d", &a, &b);
printf("%lld\n", dp[b - a]);
}
}