剑指Offer-五只猴子吃桃子
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
题目分析
从开始的第一只猴子开始想,他将桃子分成五份然后多出来一份,剩下的也就是这一堆桃子总数A的(A-1)/5 * 4个桃子,也就是原来桃子数除去1个以后的五分之四个。接下来第二只猴子来了以后,把这剩下的桃子又分为五份仍然剩下一份,那么,这个平均分的数目可以表示为((A-1)/5*4 - 1) /5 ,然后最后剩下的交给下面的猴子分割的数目为((A-1)/5*4 - 1) /5 * 4,然后不断的迭代这个公式得到((((A-1)/5*4 - 1) /5 * 4 -1)/5 * 4 - 1) /5 * 4 - 1)/5 ==y,这个y表示的是最后一个猴子分到的桃子的数量。
解题思路
以最后一只猴子的桃子个数为出发点,倒着推第一个猴子的个数,那么给定一个最后这个猴子的桃子数量以后不断计算它前一个猴子的桃子数量,计算前一个猴子的时候,要保证的是这个猴子的桃子数应该可以把4除尽,因为公式中存在四分之五要想保证每一步都能按照题目的意思分好,那么就需要在每一次倒推的时候,计算出来的值要保证能够全部除尽4这个值。
(((((5*y + 1) / 4 * 5 + 1) / 4 * 5 + 1) / 4 * 5 + 1) / 4 * 5 + 1) = A
根据这个思路的话,试想如果正推的话应该也是可以的了。
代码实现
public static void main(String[] args) {int minCount = 4;int minCountCopy = minCount;for(int i = 0; i < 5; i++) {if(i == 0) {minCount = minCountCopy;minCount = minCount * 5 + 1;} else {if(minCount % 4 != 0) {minCount = minCountCopy;minCount ++;minCountCopy = minCount;i = -1;}minCount = minCount * 5 / 4 + 1;}}System.out.println(minCount);}
剑指Offer-五只猴子吃桃子相关推荐
- 剑指offer五:两个栈实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. package com.jianzhioffer;import java.util.Stack;publ ...
- 关于《剑指offer》的66道编程题的总结(五)
注:2019年9月8日21:57:16 这部分主要是解决与二叉树相关的问题 文章目录 (第四十一题)重建二叉树 (第四十二题)从上往下打印二叉树 (第四十三题)二叉树的深度 (第四十四题)二叉树的镜像 ...
- Leetcode剑指offer(五)
Leetcode剑指offer 31从上到下打印二叉树 II(32-2.Easy) 1)题目要求 2)我的解法 3)其他解法 4)自己的优化代码 5)学到的东西 32.从上到下打印二叉树 III(32 ...
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...
- 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
各位程序猿: <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知 ...
- 【LeetCode 剑指offer刷题】查找与排序题14:Wiggle Sort(系列)
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Wiggle Sort II Given an unsorted array nums, reorder it su ...
- 《剑指offer》题目说明
剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...
- 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 【LeetCode】剑指 Offer 61. 扑克牌中的顺子
[LeetCode]剑指 Offer 61. 扑克牌中的顺子 文章目录 [LeetCode]剑指 Offer 61. 扑克牌中的顺子 一.集合Set + 遍历 二.排序 + 遍历 总结 解题思路 根据 ...
最新文章
- Java项目:宿舍寝室维修上报管理系统(java+SpringBoot+FreeMarker+Mysql)
- PHP开发移动端接口(增强版)
- 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式
- 多个so中模板单例的多次实例化
- Java静态变量与静态方法与成员变量成员方法的区别
- 0318互联网新闻 | Snapchat下月进军游戏平台;阿里巴巴将上线二哈智能防骚扰电话的应用程序...
- 真正意义的Anchor-Free,FCOS目标检测算法了解一下
- oracle数据库创建
- 一个简单的验证码识别教程
- EFCore之命令行工具
- java skip_Java CharArrayReader skip()方法
- 跨境电商适合做独立站吗?是入平台好还是独立站好?
- 7. 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- Linux sort命令浅析
- xcode 9.0 iOS 11
- java发微信字体颜色,微信公众号 模板消息 字体颜色 错位?
- pg数据库游标的使用
- activiti 获取审批人员_activiti,根据任务id获取该任务节点配置的获选人或者获选组...
- 使用Java模拟浏览器登陆网站(以抓取武汉理工大学教务处学生个人课表网页为例)
- oracle热备是什么意思,Oracle冷备和热备脚本