统计每个月兔子的总数【斐波那契】

这是一篇关于如何运用斐波那契数列解决计算兔子繁殖问题的文章。题目描述了一对兔子从第三个月开始每月生一对新兔子,求解各月兔子总数。通过输入月份,输出对应的兔子总数。作者提到了使用斐波那契数列的思路,并指出可以通过矩阵的n次幂在O(logn)的时间复杂度内求解,将线性递推问题转换为矩阵乘法,展示了线性代数在解决此类问题中的应用。
摘要由CSDN通过智能技术生成

题目

描述

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

输入

输入int型表示month

输出

输出兔子总数int型

样例输入

9

样例输出

34

思路

斐波那契数列。。。
第一个月 1对兔子
第二个月 1对兔子
第三个月 2对兔子
第四个月 3对兔子
。。。。

代码

#include <iostream>
using namespace std;
int Facbonali(int num)
{
    if(num==0)
    {
        return 0;
    }
    else if(num==1)
    {
        return 1;
    }
    else
    {
        return Facbonali(num-1)+Facbonali(num-2);
    }

}
int main()
{
    int N;
    cin>>N;
    cout<<Facbonali(N)<<endl;
}

说到斐波那契数列

Fibonacci数列定义为:f(n) = f(n-1) + f(n-2), f(0) = 0, f(1) = 1;问题:输入n,请给出求f(n)的时间复杂度不超过O(logn)的算法。

首先,我们构造两个向量v1=(f(n+1), f(n))和v2=(f(n+2), f(n+1)),根据Fibonacci
数列性质,我们可以得到从v1到v2的递推变换矩阵:

[f(n+2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值