#include
using namespace std;
int a[400]= {1,1},b[400]= {1,1},c[400]= {1,1};//定义数组
void mf(int a, int b, int c) {//定义函数(高精度加法)
int a1 = a[0], b1 = b[0];//定义变量
int len = max(a1, b1) + 1;//数组的数位
for (int i = 1; i <= len; i++) {
c[i]=a[i]+b[i];
}
for (int i = 1; i < len; i++) {
if (c[i] > 9) {
c[i + 1] = c[i + 1] + 1;
c[i] = c[i] - 10;
}
}
if (len > 1 & c[len] == 0) len–;
c[0] = len;//结果赋值
}
int main() {
int m, n;
cin >> m >> n;
if (m > n) {//因为“只能从标号小的蜂房爬到标号大的相邻蜂房”,所以m>n无解
cout << 0;
return 0;
}
int t = n - m + 1;//“n-m>=0”!!!
for (int i = 3; i <= t; ++i) {
mf(a,b,c);//函数计算
for (int i = 0; i <= b[0]; i++) {
a[i] = b[i];//把b赋值到a中
}
for (int i = 0; i <= c[0]; i++) {
b[i] = c[i];//把c赋值到b中
}
}
for (int i = c[0]; i > 0; i–) cout << c[i];//输出
return 0;
}
AC代码