题解
蜜蜂路线
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int f[100][100]; // 第几项,当前结果的数字长度 int len = 1; // 当前高精度数字的位数 int main() { int m, n; cin >> m >> n; // 计算实际需要走的数量 int k = n - m; // 特殊情况处理:如果k小于等于0 if(k <= 0){ cout << 0; return 0; } // 特殊情况处理:如果只需要走1步 if(k == 1){ cout << 1; return 0; } // 特殊情况处理:如果只需要走2步 if(k == 2){ cout << 2; return 0; } // 初始化前两种情况的走法数 f[1][1] = 1; // 第一步,长度为1 f[2][1] = 2; // 第二步,长度为1 // 从第3级台阶开始计算到第k级台阶 for(int i = 3; i <= k; i++){ // 第一步:将前两项相加得到当前项 // f[i] = f[i-1] + f[i-2] for(int j = 1; j <= len; j++){ f[i][j] = f[i-1][j] + f[i-2][j]; } // 第二步:处理进位 for(int j = 1; j <= len; j++){ if(f[i][j] >= 10){ f[i][j+1] += f[i][j] / 10; // 进位到下一位 f[i][j] %= 10; // 保留个位 } } // 第三步:检查是否需要增加位数 // 如果最高位的下一位有值(进位产生的),则位数加1 if(f[i][len+1] > 0){ len++; } } // 输出结果:从最高位到最低位依次输出 for(int i = len; i >= 1; i--){ cout << f[k][i]; } return 0; }
- 1