猴子摘桃

问题描述:

  一只猴子摘桃子,摘累了,决定休息一下再分桃子。过了一会,来了一只猴子,把所有桃子均分成了5份,结果多了1个,就把多出的吃了,然后拿走了其中的一份;过了一会,又来了一只猴子,它并不知道前面已经有猴子来过了,也把所有桃子均分成了5分,结果多了1个,就把多出的吃了,然后拿走了其中的一份;后面的第3、4、5只猴子也是同样的道理,分5份,吃一个,拿走一份。问这堆桃子最初总共至少有几个?最后又会剩几个?

问题解析:

  第一只:5A1 + 1;

  第二只:5A2 + 1 = 4A1

  第三只:5A3 + 1 = 4A2

  第四只:5A4 + 1 = 4A3

  第五只:5A5 + 1 = 4A4

  最后剩余桃子数量:4A5

解法分析:

  如果直接计算A1——A5,势必使计算非常复杂。仔细观察,可以发现如下关系:

  5(A2 + 1) = 4(A1 + 1);

  5(A3 + 1) = 4(A2 + 1);

  5(A4 + 1) = 4(A3 + 1);

  5(A5 + 1) = 4(A4 + 1);

  => A5 + 1 = 4(A4 + 1)/5 = ... = 44(A1 + 1)/54

  => A1最小为54 - 1 = 624,此时A5 = 255

  => 桃子最初至少有3121个,最后剩1020个。

结果相关:

  等比数列:又称几何数列。是一种特殊数列。它的特点是:从第2项起,每一项与前一项的比都是一个常数。

时间: 2024-10-04 05:21:26

猴子摘桃的相关文章

c#部分---递归题目;猴子摘桃

//猴子摘了好多好多桃子,一天需要吃掉总数的2/3, //觉得不过瘾,还得再多吃一个 //吃到第9天的时候,发现只有2个桃子了 //问,当初猴子摘了多少桃子 class Program { public int taozi(int n) { int sum; if (n == 9) { return 2; } sum = 3 * (taozi(n + 1) + 1); return sum; } 初始化,输出 // Program hanshu = new Program(); //double

猴子摘桃的算法

//有一只猴子摘了一堆桃子,当即吃了一半,可是桃子太好吃了,它又多吃了一个,第二天它把第一天剩下的桃子吃了一半,又多吃了一个,就这样到第十天早上它只剩下一个桃子了,问它一共摘了多少个桃子? //方法1 function taozi($i){ if($i==10) { return 1; } $i=(taozi($i+1)+1)*2; return $i; } echo "一共桃子有",taozi(1); echo '<hr/>'; //方法2 $a=1; for($i=10

经典的猴子吃桃问题,C语言算法,根据天数和当日桃子个数,求第一天猴子所摘桃的个数,

#include<stdio.h> #include<stdlib.h> int tao_m(int a,int m) { int day[10]; int i; day[a-1] = m; for (i = a-2; i >= 0; i--) { day[i] = 2 * (day[i + 1] + 1); } return (day[0]); }   int main() { int d, m; printf("请输入今天是是猴子摘桃后的第几天:");

聪明人的游戏,初中版 之目录

第一章算法概述    第1课 算法的概念    第2课 结构化程序设计思想    第3课 算法的时空复杂度 第二章字符串处理与进制转换    第1课 贝贝的交通指挥系统    第2课 贝贝的图形    第3课 贝贝的加密工作    第4课 贝贝的保险库密码    第5课 贝贝的数学课    第6课 贝贝与外星人    本章知识归纳    本章综合练习 第三章枚举算法    第1课 桐桐的计算    第2课 桐桐的数学难题    第3课 素数的秘密    第4课 桐桐的思考    第5课 桐桐的研

2016程设期末伪题解

期末发挥实在是太差了-_-# 比2015年少了好多送分题,整体难度显得很大,但是考完之后静下来做又觉得并不是很难orz 1. 篮球联赛:暴力枚举(我用的dfs来枚举) 2. 夺宝探险:暴力dfs 3. 寻找边缘:从边缘暴力dfs 4. 猴子摘桃:可以直接用两个指针指向区间端点做到O(n) 5. 分形盒:直接递归 6. 42点:暴力dfs遍历所有结果 以上几题就不放代码了 7. 上机:dp 题意:有 n 个座位排成一排(1<=n<=10000),给定坐到每个座位上两边有0个.1个和2个人时可获得

java学习日记第三天之简单算法问题

hello 大家好 今天学习了一些有关java算法: 1.算法:解决问题的基本步骤,和实现方案 业务处理中的算法问题: 分析问题找规律 针对规律写代码 2.九九乘法口诀表 问题分析 : 1*1=1 1*2=2 2*2=2 1*3=3 2*3=6 3*3=9 我们发现规律 第几行有几个乘法式,需要两个遍历,从1-9行遍历,然后1-9列遍历 public class ReturnTest { public static void main(String[] args) { ReturnTest.ce

算法:枚举

枚举法又称穷举法或列举法.其基本思想是按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举过程中,检验每个可能解是否为问题的解.这也是一种“筛选”,对于列举的可能解,既不能遗漏也不能重复. 使用枚举法,主要把握两个方面确定搜索范围,这个范围必须是有限的.②选择搜索策略,如何枚举,按照一条什么样的路线来逐一枚举. 问题 D: 猴子摘桃 时间限制: 1 Sec  内存限制: 64 MB提交: 32  解决: 30[提交][状态][讨论版] 题目描述 果园里种了很多桃树,当桃树开始结果的时候,

Leetcode--easy系列4

#58 Length of Last Word Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence c

《饥荒游戏》SW BUG 刷猴子 &amp; 刷淘气值 办法

简介 该办法利用刷猴子的方式,通过杀猴子获取淘气值,从而刷出坎普斯,继而刷坎普斯背包 物品准备 灭火器x1 箱子x1 逗猴球x1 猴窝xN 帽贝岩x2 避雷针x1 操作步骤 1.灭火器建造在2个帽贝岩之间,1远1近,灭火器会朝远处的帽贝岩发射雪球(原因不详 =.=) 2.在远处的帽贝岩边上建造1箱子 3.箱子内放置逗猴球,用于吸引猴子 4.猴窝建造若干,猴子会被箱子内的逗猴球吸引(BUG) 5.建造避雷针,防猴窝被劈