洛谷 蜜蜂路线 高精度
题目描述
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 m 开始爬到蜂房 n,m<n,有多少种爬行路线?(备注:题面有误,右上角应为 n−1)
输入格式
输入 m,n 的值
输出格式
爬行有多少种路线
输入输出样例
输入 #1复制
1 14
输出 #1复制
377
代码:
#include <bits/stdc++.h>
#define MX 1005
using namespace std;
int f[MX][MX];
int m,n,len = 1;
void Plus(int x) {
for(int i = 1; i <= len; i++) {
f[x][i] = f[x-1][i] + f[x-2][i];
}
for(int i = 1; i <= len; i++) {
if(f[x][i] > 9) {
f[x][i+1] += f[x][i] / 10;
f[x][i] = f[x][i] % 10;
}
}
if(f[x][len+1]) len++;
}
int main() {
scanf("%d%d",&m,&n);
f[1][1] = 1;
f[2][1] = 2;
for(int i = 3; i<=n-m; i++) Plus(i);
for(int i = len;i>0;i--)
{
cout<<f[n-m][i];
}
return 0;
}