秒杀一道水题qwq[猴子吃桃问题]

本文详细解析了一道经典的数学问题——猴子吃桃问题,并通过C++代码实现了算法解决方案。问题描述为:一只小猴买了若干个桃子,每天吃掉剩余桃子的一半再多吃一个,直到剩下最后一个桃子。文章提供了详细的解题思路和代码实现。

题目:
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n(n\le20)n(n≤20) 天早上起来一看,只剩下 1 个桃子了。请问小猴买了几个桃子?

这是本蒟蒻第一次写题解qwq
废话少说贴代码:

#include<bits/stdc++.h>  
using namespace std;

int main()
{
	int n;
	cin>>n;
	long long t=3*pow(2.0,n-1)-2;
	if(n!=0)cout<<t;
	else if(n==0)cout<<1;
}

原理很简单
我们将最后一天记为a1=1

然后我们有递推关系 an =2*( an-1 +1)

dalao可以直接用不动点法求得an

当然,经过恒等变换

可得an+2 =2*( an-1 +2) 令bn=an+2

有b1=3 且bn=2bn-1 bn是公比为2首项为3的等比数列!

故bn=32^(n-1) an=32^(n-1)-2;

于是我们就可以直接输出了!(别忘记讨论n==0的情况)

注意,在n较大时为了保证范围要开long long


我就是因为这个第一次没AC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值