2475: 【作】【普及-】【P2437】蜜蜂路线

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:22 解决:7

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 lns="http://www.w3.org/1998/Math/MathML"> 开始爬到蜂房 lns="http://www.w3.org/1998/Math/MathML">lns="http://www.w3.org/1998/Math/MathML"><,有多少种爬行路线?

输入

输入 lns="http://www.w3.org/1998/Math/MathML">, 的值

输出

爬行有多少种路线

样例输入 复制

1 14

样例输出 复制

377

提示

对于100%的数据,lns="http://www.w3.org/1998/Math/MathML">1,1000


#include<bits/stdc++.h>

using namespace std;
int main() {
    long long n, m, f1 = 1, f2 = 1, ans = 1;
    cin >> m >> n;
    for (int i = 3; i <= n - m + 1; i++) {
        ans = f1 + f2;
        f1 = f2;
        f2 = ans;
    }
    cout << ans;
    return 0;
}


#include<bits/stdc++.h>

using namespace std;
int n, m, a[5005] = {1}, b[5005] = {1}, c[5005] = {1}, len = 1;
void f() {
    int jw = 0;
    for (int i = 0; i < len; i++) {
        c[i] = a[i] + b[i] + jw;
        jw = c[i] / 10;
        c[i] = c[i] % 10;
    }
    if (jw != 0) {
        c[len] = jw;
        len++;
    }
    for (int i = 0; i < len; i++) {
        a[i] = b[i];
        b[i] = c[i];
    }
}
int main() {
    cin >> m >> n;
    for (int i = 3; i <= n - m + 1; i++) {f();}
    for (int i = len - 1; i >= 0; i--) {
        cout << c[i];
    }
    return 0;
}