http://acm.hdu.edu.cn/showproblem.php?pid=2044

郁闷,WA几次,原来是int型小了,long long 才AC了,教训,谨记!

递推来做,f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1,这里 n=蜂窝编号大-蜂窝编号小.循环一下就出来了。

 1 #include <iostream>
 2 using namespace std;
 3 long long f(int m)
 4 {
 5     long long a[55];
 6     a[0]=1,a[1]=1;
 7     if(m<=2)
 8     {
 9         return m;
10     }
11     for(int i=2;i<=m;i++)
12     {
13         a[i]=a[i-1]+a[i-2];
14     }
15     return a[m];
16 
17 }
18 int main()
19 {
20     int n,a,b;
21     cin>>n;
22     while(n--)
23     {
24         cin>>a>>b;
25         cout<<f(b-a)<<endl;
26     }
27     return 0;
28 }
29