海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子?

题目:海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。
* 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的,
* 问海滩上原来最少有多少个桃子?

思路1: 逆序 原来 第1只 第2只 第3只 第4只 第5只 n n-n/5-1 m-m/5-1 x-x/5-1 使用递归来解决问题

public class 第四十一题猴子分桃子 {
    public static void main(String[] args) {
        /*
         * 思路: 逆序 原来 第1只 第2只 第3只 第4只 第5只 n n-n/5-1 m-m/5-1 x-x/5-1 使用递归来解决问题
         */
        int sum = 0;
        for (int i = 60; i < 6100; i++) {
            int n = i;
            for (int m = 1; m < 6; m++) {
                sum += getValue(n, m);
            }
            if (sum == n) {
                System.out.println(i);
            }
        }
    }

    // 获取第m只猴子拿走的桃数量
    public static double getValue(int d, int m) {// n为总数,m为第1,2,3,4,5只猴
        int result = 0; // 保存结果
         result =  d / 5 + 1; // 第一只
        if (m == 1) {
            return result;
        } else {
            return getValue((d - result), m - 1);
        }
    }
}

思路2:

设第5只猴子得到a个桃子.分队前有5a+1 第四只得到 (5a+1)/4 分堆前有 (5a+1)/4 + 1 .我想知道为什么 第四子猴子得到
* (5a+1)/4 为什么不是 (5a+1)/5 为什么第四子得到的不是 5a+1
*
* 设第四只猴子拿【暂不说 得】到y个苹果,那么还剩下(除了扔掉的一个)4y个!而 4y=5a+1 所以 y=(5a+1)/4 .即第4只猴子得到
* (5a+1)/4 个苹果.

public class 第四十一题猴子分桃子_version2 {
    public static void main(String[] args) {
        // 统计次数
        int count, m, j = 0;
        for (int i = 4; i < 10000; i += 4) {
            count = 0;
            m = i;
            for (int k = 0; k < 5; k++) {
                j = i / 4 * 5 + 1;
                i = j;
                if (j % 4 == 0) {
                    count++;
                } else
                    break;
            }
            i = m;
            if (count == 4) {
                System.out.println("原有桃子" + j + "个");
            }
        }
    }
}

原文地址:https://www.cnblogs.com/zjulanjian/p/10952744.html

时间: 2024-10-10 08:44:52

海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子?的相关文章

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?

/* 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份. 第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份, 第三.第四.第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子? 解题思路: 从第五步逆推: 5x+1=4y; 4y+y+1=4z; 4z+z+1=4p; 4p+p+1=4s; 4s+s+1=最初 y=(5x+1)/4; 4z=5y+1=(5x+1)/4*5+1 */ #inc

中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八--&gt;12345678)

昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2…十换成10.可是那么问题来了…… 一十二呢…不能是1102吧…这不就坑爹了吗?一百万呢………所有我苦苦思索,花费了我差不多半天的时间,终于写出了下面的程序. 1 public static void main(String[] args){ 2 3 Map<Character, String> numberMap = new HashMap<

汇编语言(二、三、四、五、六、七、八)

时间过的真快. 本篇叫 <汇编语言 二.三.四.五.六.七.八> 我大概是想偷懒了,而且即将偷懒.学习汇编语言跟学习其他语言一样,都要多练,然后弄个称手的开发环境,以前发现windows 自带的debug 可以用来学习汇编,而且可以用debug工具写简单的汇编程序,并且可以生成扩展名为com的程序.debug从dos时代就有了,一直到vista.另外一个学习汇编语言的工具emu8086.这其实是一个集8086模拟器.设备模拟器.调试器.ide于一身的工具.emu8086本身自带一个汇编教程,虽

《构建之法》第三、四、五章学习总结

第三章讲的是关于如何成为一名合格甚至优秀的软件工程师.第一节主要讲的是个人能力的发展与团队合作的关系:第二节讲的则是关于软件工程师的职业发展:最后一节通过用魔方举例向我们讲述了怎样提升自己的技能. 第四章讲的是关于软件开发时两个人该怎样合作.这一章的前三节讲的都是关于代码规范,包括风格规范和设计规范:第四节讲的是关于代码复审时的问题,代码复审的正确定义是看代码是否在"代码规范"的框架内正确地解决了问题:第五节讲的是结对编程 :第六节介绍了两人合作的不同阶段和需要了解的相关技巧. 第五章

金三银四铜五铁六

鲁班简称LB 据说,金三银四,截止今天为止面试黄金时间已经过去十之八九,而LB恰逢是这批面试大军其中的一名小兵,很不幸今年恰逢遇上了互联网寒冬(即各大公司都在裁员,对外提供岗位相对较少的,这意味着很多猿即将面临着更多的竞争对手和相对较少的岗位困境),LB求职过程种种被虐,尸体趟过召唤师峡谷每个角落,如今历历在目,终究,当初的一名无名小卒如今已是一名超级兵哈哈,但是从这个事情上却学到了不少的东西,LB不亏. 经验也总是用来交流用的,于是LB觉得有必要记录下来,也许对猿们会有一丝帮助. 首先,找工作

2020年最全多线程面试题总结,助你“金三银四”过五斩六!

1.多线程有什么用? 1)挥多核CPU 的优势随着工业的进步,现在的笔记本.台式机乃至商用的应用服务器至少也都是双核的,4 核.8 核甚至 16 核的也都不少见,如果是单线程的程序,那么在双核 CPU 上就浪费了 50%, 在 4 核 CPU 上就浪费了 75%.单核 CPU 上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了.多核 CPU 上的多线程才是真正的多线程,它能让你的多段逻辑同时工

冲刺第二,三,四,五,六天

由于现实生活比较匆忙,在这几天里我们大家都只是各自回去研究了下开发环境的问题,而且大家都各自出现了不少问题,经过这几天大家发现的问题并反馈回来的问题,出现的问题大致有一下几点: 1.ADT无法下载or安装. 2.android studio无法下载. 3.SDK无法下载. 4.android studio下载好了,但是打开要很久. 5.android 各版本的API无法下载. 经过这几天的总结和探讨发现,主要是由于天朝墙的原因,我们又到处找解决办法..最终我们决定用比较简单的修改hosts方法和

第三,四,五,章节理论知识的总结

第三章 认识运算符和表达式 ,运算符又叫操作符,是一个用于运算的符号,作用于一个或多个操作数.运算符分类:一元(目)运算符,作用于一个操作数.二元(目)运算符,作用于两个操作数.三元(目)运算符,作用于三个操作数.按运算符的功能分类:算术运算符,用于数学运算.逻辑运算符,判断真假.位运算符,用于二进制运算.其他.表达式:一条有意义的语句,并且该语句至少包含一个操作数和一个操作符,每个表达式,都有一个返回类型,每个表达式都可以与其他表达式进行运算,只要类型符合要求.位运算符主要用于对数字二进制运算

经济——人的行动(三、四、五)

三.经济学与对理性的反叛 1.对多元逻辑论的批判 先验之悟性和纯粹之推理 基本逻辑关系和思想行动诸范畴,乃一切人类知识的最终来源 每一种认知都受其内心逻辑结构的限制而蕴含于此结构中 在人之行动能够实现其目的的轨道里,没有不可知论的容身之地 2.理性 四.行动范畴的初步分析 1.目的与手段 任何行动的目的.目标或意图,通常都指的是一种不适之感的消解 手段不存在于给定的宇宙中,宇宙中只存在着物件,行动人使物件成为手段 行动学不研究外在世界,只研究与外在世界有关的人的行动 人的行动学的真实性不适物质的