//传送门:http://poj.org/PRoblem?id=3979#include <queue>#include <functional>#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#include <ctime>#include <assert.h>using namespace std;#define N 55long long dp[N]; //注意可能超 int,并且进行打表int main(){ int t; scanf("%d",&t); while(t--){ int a,b; scanf("%d%d",&a,&b); if(a>b){ // a>b 输出0 printf("0/n"); continue; } memset(dp,-1,sizeof(dp));// 如果没查询过,则为-1 dp[0]=dp[1]=1; // 斐波那契数列 第0位 与 第1位 为1 if(dp[b-a]!=-1){ // dp[b-a] 值不为 -1,则表示已经查询过,直接输出结果 printf("%lld/n",dp[b-a]); continue; }else{ for(int i=2;i<=b-a;i++){ dp[i]=dp[i-1]+dp[i-2]; // 由于蜜蜂只能往右走,则可能从第 i-2 与 第 i-1位 到第 i 位 } } printf("%lld/n",dp[b-a]); } return 0;}
新闻热点
疑难解答