其中,蜂房的结构如下所示。
2 1 2 3 6
13
题解:涉及到路径问题,就目前知识而言只有广搜,深搜和观察规律,而这个问题并没有那么规整,所以先观察规律,题目中要求的不能反向爬行,所以可行的方向只有正右,右下或者右上,写出几个比较简单的点之间的路径,可以发现规律:如果f(n)表示从第一个点到第n点的路径之和,则由递推公式:f(n)=f(n-1)+f(n-2),且如果是任意两点a,b间的路线和则为f(a-b)。除此外必须注意在f(48)处,int类型已经无法容纳这个常数了,所以要用 unsigned long long int ,在输出是也要用lld输出!!!
#include<stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int i,j,n,m; unsigned long long a[51]; a[0] = 0; a[1] = 1; a[2] = 2; for( i = 3;i <= 48;i++) { a[i] = a[i-1] +a[i-2]; } // printf("%lld\n",a[48]); scanf("%d",&n); while(n--) { scanf("%d%d",&i,&j); printf("%lld\n",a[j-i]); } return 0; }