N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分,发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成N分,还多一个,它吃了那个桃子,又拿走其中
来源:互联网 发布:f3飞控调参软件中文 编辑:程序博客网 时间:2024/04/28 11:23
N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分, 发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成N分,还多一个,它吃了那个桃子,又拿走其中的一份,第三只、第四只......第N只猴子都如此做了,请问这堆桃子至少有多少个?
解法1:暴力
import java.util.Scanner;/** * N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分, * 发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子 * 分成N分,还多一个,它吃了那个桃子,有拿走其中的一份,第三第四第五只第 * N只猴子都如此做了,请问这堆桃子至少有多少个? * */public class Monkey1 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int m = cin.nextInt();if (m <3 || m > 9)return;long total = consume(m);System.out.println(total);}/** * @param m 猴子个数 * @return 桃子个数 */private static long consume(final int m) {if (m == 3)return 25;long t = 26;long consume = t;while (true) {int i = 0;for (i = 0; i < m; i++) {if ((consume - 1) % m == 0) {consume = (consume - 1) / m * (m - 1);} else {t++;consume = t;break;}}if (i == m) {break;}}return t;}}
解法2:对于有5只猴子的情况如下:
设开始有x个桃子,可以把x写成(x+4)-4.
第一个猴子来了,吃掉1个,还有桃子(x+4)-4-1=(x+4)-5,若想恰好可分成5份,当且仅当5可以整除(x+4),即(x+4)是5的倍数。
第一个猴子藏掉一份后,剩下的桃子为:(4/5)×[(x+4)-5]=(4/5)×(x+4)-4。
同样,第二个猴子来了,一吃一藏之后,剩下的桃子数为 :(4/5)×[(4/5)×(x+4)-5]。由于(4/5)×(4/5)×(x+4)是整数,故(x+4)应是5×5=25的倍数。
如此一来,五个猴子一吃一藏,恰好剩下 (4/5)×(4/5)× (4/5)×(4/5) ×(4/5) ×(x+4)-5个桃子,故(x+4)必须是5×5×5×5×5的倍数,即x+4=5^5
所以: x=3125-4=3121
即开始最少有3121个桃子.import java.util.Scanner;/** * N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分, * 发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子 * 分成N分,还多一个,它吃了那个桃子,有拿走其中的一份,第三第四第五只第 * N只猴子都如此做了,请问这堆桃子至少有多少个? * */public class Monkey2 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int m = cin.nextInt();if (m <3 || m > 9)return;long total = consume(m);System.out.println(total);}/** * @param m 猴子个数 * @return 桃子个数 */private static long consume(final int m) {return (long) (Math.pow(m, m) - (m - 1));}}
0 0
- N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分,发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成N分,还多一个,它吃了那个桃子,又拿走其中
- 五只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成五分,发现还多一个,它吃了哪个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成五分,还多一个,它吃了那个桃子,有拿走其中的一份,第三第四第五
- 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一
- java 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中
- 【程序41】 题目:海滩上有一堆桃子,五只猴子来分。第一只 猴子把这堆桃子凭据分为五份,多了一个,这只猴子 把多的一个扔入海中,拿走了一份。第二只猴子把剩下 的桃子又平均分成五份,又多了一个,
- java 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个, //这只猴子把多的一 个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份, //又多了一个,
- 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时,见只剩下一个
- 猴子吃桃问题。猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子
- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一
- 猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来
- 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 第二天早上又将剩 * 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃
- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一
- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下
- 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只
- ACM 324有一堆桃子不知数目猴子第一天吃掉一半又多吃了一个第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29) 输入
- 猴子吃桃子问题:猴子第一天摘了若干个桃子,当时吃了若干个,还不瘾,又多吃了一个,第二天早上,又将剩下的桃子吃掉了一半,又多吃了一个。以后每一天早上都吃前一天剩下的一半零一个,直到第十天发现剩一个了,求
- C#源代码—猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多 吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。
- 剑指Offer-五只猴子吃桃子
- 九度oj 1030
- 求两个串的最大公共子串
- Java中HashMap遍历的两种方式
- SDNU 1125 HDU 1004 Let the Balloon Rise【用map做水题】【map应用】 【8月14】
- 常量折叠
- N(3<=N<=9))只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成N分,发现还多一个,它吃了那个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成N分,还多一个,它吃了那个桃子,又拿走其中
- MAC系统优化
- Hibernate将sql查询结果中字符转为char类型的原因
- OC - Method(High)
- android开发步步为营之70:android接入Google Analytics总结
- uboot 入口解析
- js中匿名函数的N种写法
- UVa 1600-Patrol Robot题解
- hdu 1087 Super Jumping! Jumping! Jumping! 最长上升子序列的变形