1. 程式人生 > >acm 3 1011 有隻小蜜蜂

acm 3 1011 有隻小蜜蜂

1.1011

2.

一隻小蜜蜂...
Problem Description
有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。

其中,蜂房的結構如下所示。

杭電ACM <wbr>2044 <wbr>一隻小蜜蜂 <wbr>遞推類


Input
輸入資料的第一行是一個整數N,表示測試例項的個數,然後是N 行資料,每行包含兩個整數a和b(0<a<b<50)。
Output
對於每個測試例項,請輸出蜜蜂從蜂房a爬到蜂房b的可能路線數,每個例項的輸出佔一行。
Sample Input
2 1 2 3 6
Sample Output
1 3

3.中文題意不多解釋呵呵,有隻小蜜蜂呀

4.遞推斐波那契數列,分析的遞推數列

斐波那契數列,觀察到每個蜂房都和與它標號相鄰的前兩個標號蜂房相鄰,既是x-1號和x-2號,於是猜測這是斐波拉數列的應用,根據猜測繼續分析得到遞推公式 NUM(a to b) = NUM(b - 1) + NUM(b-2);以a為端點,直到a停止。
唯一需要注意的地方就是資料問題了,由於資料比較大,直接用int要產生溢位所以改用__int64 (aron-遊戲的部落格)

5.#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
    long long int a,T,n,m,i,j,temp,k,b;
    long long int map[60];
    map[0]=1;
    map[1]=1;
    for(i=2;i<55;i++)
        map[i]=map[i-1]+map[i-2];
    cin>>T;
    while(T--)
    {
        scanf("%d%d",&a,&b);
        //cout<<a<<b<<endl;
        cout<<map[b-a]<<endl;
    }
    return 0;
}