洛谷-P2437 蜜蜂路线
洛谷-P2437 蜜蜂路线
题目描述
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 \(m\) 开始爬到蜂房 \(n\),\(m<n\),有多少种爬行路线?(备注:题面有误,右上角应为 \(n-1\))
输入格式
输入 \(m,n\) 的值
输出格式
爬行有多少种路线
输入输出样例
输入 #1
1 14
输出 #1
377
说明/提示
对于100%的数据,\(M,N\le 1000\)
C++代码
#include <iostream>
#include <cstring>
using namespace std;
string add(string x, string y) {
int lenx = x.size();
int leny = y.size();
if (lenx > leny)
for (int i=0; i<lenx-leny; ++i)
y = '0' + y;
else
for (int i=0; i<leny-lenx; ++i)
x = '0' + x;
int jw = 0;
for (int i=max(lenx, leny)-1; i>=0; --i) {
x[i] += (y[i] - '0') + jw;
jw = (x[i] - '0') / 10;
x[i] = (x[i] - '0') % 10 + '0';
}
if (jw != 0)
x = char(jw + '0') + x;
return x;
}
int main() {
int m, n;
cin >> m >> n;
string a[n+1];
a[m] = a[m+1] = "1";
for (int i=m+2; i<=n; ++i)
a[i] = add(a[i-1], a[i-2]);
cout << a[n] << endl;
return 0;
}