题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044
思路:a爬到b的可能路线数就等于1爬到b-a的可能路线数;1到2有1种可能,1到3有2种可能,1爬到4有3种可能,1爬到5有5种可能,1爬到6有8种可能...不难发现,这是斐波那契递推。
问题:
1.这道题的答案很大,开始我使用int提交WA,后改用long long 类型AC。
2.输出long long型得使用%lld。
代码:
#include <stdio.h>
long long ans(int x);
int main()
{
int n, a, b;
scanf("%d", &n);
for(;n>0;n--)
{
scanf("%d%d", &a, &b);
printf("%lld\n", ans(b - a));
}
return 0;
}
long long ans(int x)
{
int i;
long long ans[60];
ans[1] = 1; ans[2] = 2;
for (i = 3; i <= x; i++)
{
ans[i] = ans[i - 1] + ans[i - 2];
}
return ans[x];
}