洛谷-P2437 蜜蜂路线

洛谷-P2437 蜜蜂路线

原题链接:https://www.luogu.com.cn/problem/P2437


题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 \(m\) 开始爬到蜂房 \(n\)\(m<n\),有多少种爬行路线?(备注:题面有误,右上角应为 \(n-1\)

img

输入格式

输入 \(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;
}
posted @ 2020-12-13 17:55  yuzec  阅读(471)  评论(0编辑  收藏  举报