//傳送門: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;}
新聞熱點
疑難解答