5人分香蕉,依次取香蕉,每个人都先吃掉一个,之后分为5份并拿走一份,问最少有多少香蕉
package com.example.demo.controller;
public class test {
static int num = 0;
public static void main(String[] args) {
int n = 5;
int s = -1;
while (s + 1 == 0) {
num++;
s = getnum(n);
}
System.out.println(s);
}
public static int getnum(int n) {
if (n == 1) {// 最后一个人
return getInit();
}
int s = getnum(n - 1);
if (s % 4 != 0) {
return -1;
}
return (s / 4) * 5 + 1;
}
public static int getInit() {
while (true) {
if (num % 4 == 0 && (num - 1) % 5 == 0) {
return num;
}
num = num + 1;
}
}
}
python
# -*- coding: utf-8 -*-
num=0
def getNum(n):
if n==1:
return getInit()
s = getNum(n-1)
if s%4!=0:
return -1
return (s/4)*5 + 1
def getInit():
global num
while True:
if (num % 4 ==0) and (num-1)%5==0:
return num
num = num+1
v=-1
while v==-1:
print(num)
v=getNum(5)
num = num + 1
print(v)
5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
package com.example.demo.controller;
public class test {
static int num = 0;
public static void main(String[] args) {
int n = 5;
int s = -1;
while (s + 1 == 0) {
num++;
s = getnum(n);
}
System.out.println(s);
}
public static int getnum(int n) {
if (n == 1) {// 最后一个人
return getInit();
}
int s = getnum(n - 1);
if (s % 4 != 0) {
return -1;
}
if (n == 1) {
n = 6;
}
return (s / 4) * 5 + 6 - n;
}
public static int getInit() {
while (true) {
if (num % 4 == 0 && (num) % 5 == 0) {
return num;
}
num = num + 1;
}
}
}