本题跟超级楼梯类似, 当前一步的情况由n-1与n-2决定, 此时f()函数中传入的参数是两点之间的间隔+1(也就是转换成从点1开始到达其他点的路线数)
还需注意本题的数据类型(long long int) 输入输出的占位符为%lld
#include <cstdio> long long int memo[55]; long long int f(long long int n) { memo[1] = memo[2] = 1; memo[3] = 2; for(long long int i = 4; i <= n; ++ i) { memo[i] = memo[i - 1] + memo[i - 2]; } return memo[n]; } int main() { long long int n, a, b; scanf("%lld", &n); while(n --) { scanf("%lld %lld", &a, &b); printf("%lld ", f(b - a + 1)); } return 0; }