P2437 蜜蜂路线题解

题目传递门

思路分析:

1、以普通的第i个蜂房进行思考,将它的状态描述为:f[i],这是一个一维数组。它可以由哪些状态转移过来?由题意,可以从i1,i2而来。
根据加法原理有f[i]=f[i1]+f[i2],其中i>2,而f[1]=f[2]=1
这就是一个斐波那契数列啊!

2、看一下数据量,M<=N<=1000,我们知道,1000极限值的斐波那契数列可不是一个小数字,int肯定暴掉,long long也是白费,usinged long long可以一试,根本还是高精度加法。

c++ 代码

#include <bits/stdc++.h>

using namespace std;
//高精度+裴波那契数列
//本题目考点:
//1、递推
//2、递推关系式的推导:找出任意一个位置,思考它是怎么来的,再用加法原理。
vector<int> add(vector<int> &A, vector<int> &B) {
    if (A.size() < B.size()) return add(B, A);
    vector<int> C;
    int t = 0;
    for (int i = 0; i < A.size(); i++) {
        t += A[i];
        if (i < B.size()) t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }
    if (t) C.push_back(t);
    return C;
}

int main() {
    int m, n;
    cin >> m >> n;
    vector<int> A, B, C;
    A.push_back(1);
    B.push_back(1);

    for (int i = 3; i <= n - m + 1; i++) {
        C = add(A, B);
        //对加数需要重新赋值
        //A<---B
        A.assign(B.begin(), B.end());
        //B<---C
        B.assign(C.begin(), C.end());
    }
    //倒序输出结果
    for (int i = B.size() - 1; i >= 0; i--)printf("%d", B[i]);

    return 0;
}
posted @   糖豆爸爸  阅读(281)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-07-18 iptable千万不要yum remove iptables
2019-07-18 【Linux】缺少service命令的解决办法
2019-07-18 CentOS7清理老旧内核
2019-07-18 ealsticsearch历史版本下载
Live2D
点击右上角即可分享
微信分享提示