问题链接:https://vjudge.net/problem/HDU-2044
Get:这是一道递推求解的题目,可能的路线数是斐波那契数列,只不过前几项不同:f(0)=0,f(1)=1,f(2)=2,f(3)=3.后面的值由f(n)=f(n-1)+f(n-2)可以求出。需要注意的是,输入值的范围是0<a<b<50,到最后的数会很大,所以用__int64
或long long
定义变量。
AC代码:
#include <iostream>
using namespace std;
int main()
{
int i, N, a, b;
__int64 c[50] = { 1,2,3 };
while (cin >> N)
{
while (N--)
{
cin >> a >> b;
for (i = 3; i < b - a; i++)
{
c[i] = c[i - 1] + c[i - 2];
}
cout << c[b - a - 1] << endl;
}
}
}