解题思路:
前提条件:每个猴子看到的桃子的个数为整数
解题关键对象:第四个猴子
过程:我们从第四个猴子着手,首先我们要满足第四个猴子拿走自己的一份香蕉后剩余个数要满足第五个猴子扔一个剩余的个数能被5整除,那么第四个猴子拿走香蕉后的香蕉个数的尾数要么是1要么是6,因此我们得出第四个猴子拿走香蕉后剩余的香蕉个必在 1、6、11、16、21、... 中。我们从1最小元素开始遍历挨个往上推出前四个猴子看到的香蕉个数,必须都满足为整数。
描述:
1、6、11、16、21、...使用集合M描述:M={x| x= 5 * j +1 ∧ j ∈ N+},
设第四个猴子拿走自己一份还剩余的香蕉个数所有可能值集合:M'。
M'一定满足
①M'∈M,
②M'任意元素M'i都满足以下五个条件,
第五个猴子拿到的桃子数:(M'i-1)/ 5 > 0;
第四个猴子看到的桃子数N4=M'i÷4x5+1为整数;
第三个猴子看到的桃子数N3=N4÷4x5+1为整数;
第二个猴子看到的桃子树N2 = N3÷4x5+1为整数;
第一个猴子看到的桃子树N1=N2÷4x5+1为整数;
M'即为所有解集合,M'min(M'集合最小元素)即为最优解。
我们需要求出的就是M'min,根据M'min推出第一个猴子看到的桃子树N1。
package com.design;
public class MainEnumSet {
public static void main(String[] args) {
Double temp;
k:for (int i = 1; ; i++) {
Double m = i * 5D + 1;
for (int index = 0; index < 4; index++) {
m = m / 4D * 5 + 1;
if (isNumeric(String.valueOf(m))) {
if(index == 3){
temp = m;
break k;
}
continue;
}
System.out.println("排除掉的数字m:" + (i * 5D + 1));
break;
}
}
System.out.println("香蕉个数:" + temp);
}
public static boolean isNumeric(String str) {
String[] strs = str.split("\.");
if(strs.length < 2){
return true;
}
str = strs[1];
for (int index =0; index < str.length(); index ++ ) {
if (Character.isDigit(str.charAt(index)) && Integer.valueOf(String.valueOf(str.charAt(index))) > 0) {
return false;
}
}
return true;
}
}
运行结果:
D:jdk1.8.0_192binjava.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:57298,suspend=y,server=n -javaagent:C:UsersadminAppDataLocalJetBrainsIntelliJIdea2020.1captureAgentdebugger-agent.jar -Dfile.encoding=UTF-8 -classpath "D:jdk1.8.0_192jrelibcharsets.jar;D:jdk1.8.0_192jrelibdeploy.jar;D:jdk1.8.0_192jrelibextRXTXcomm.jar;D:jdk1.8.0_192jrelibextaccess-bridge-64.jar;D:jdk1.8.0_192jrelibextcldrdata.jar;D:jdk1.8.0_192jrelibextdnsns.jar;D:jdk1.8.0_192jrelibextjaccess.jar;D:jdk1.8.0_192jrelibextjfxrt.jar;D:jdk1.8.0_192jrelibextlocaledata.jar;D:jdk1.8.0_192jrelibextnashorn.jar;D:jdk1.8.0_192jrelibextsunec.jar;D:jdk1.8.0_192jrelibextsunjce_provider.jar;D:jdk1.8.0_192jrelibextsunmscapi.jar;D:jdk1.8.0_192jrelibextsunpkcs11.jar;D:jdk1.8.0_192jrelibextzipfs.jar;D:jdk1.8.0_192jrelibjavaws.jar;D:jdk1.8.0_192jrelibjce.jar;D:jdk1.8.0_192jrelibjfr.jar;D:jdk1.8.0_192jrelibjfxswt.jar;D:jdk1.8.0_192jrelibjsse.jar;D:jdk1.8.0_192jrelibmanagement-agent.jar;D:jdk1.8.0_192jrelibplugin.jar;D:jdk1.8.0_192jrelibresources.jar;D:jdk1.8.0_192jrelibrt.jar;D:guoleidesignPatternoutproductiondesignPattern;D:IntelliJ IDEA 2020.1.2libidea_rt.jar" com.design.MainEnumSet Connected to the target VM, address: '127.0.0.1:57298', transport: 'socket' 排除掉的数字m:1.0 排除掉的数字m:6.0 排除掉的数字m:11.0 排除掉的数字m:16.0 排除掉的数字m:21.0 排除掉的数字m:26.0 排除掉的数字m:31.0 排除掉的数字m:36.0 排除掉的数字m:41.0 排除掉的数字m:46.0 排除掉的数字m:51.0 排除掉的数字m:56.0 排除掉的数字m:61.0 排除掉的数字m:66.0 排除掉的数字m:71.0 排除掉的数字m:76.0 排除掉的数字m:81.0 排除掉的数字m:86.0 排除掉的数字m:91.0 排除掉的数字m:96.0 排除掉的数字m:101.0 排除掉的数字m:106.0 排除掉的数字m:111.0 排除掉的数字m:116.0 排除掉的数字m:121.0 排除掉的数字m:126.0 排除掉的数字m:131.0 排除掉的数字m:136.0 排除掉的数字m:141.0 排除掉的数字m:146.0 排除掉的数字m:151.0 排除掉的数字m:156.0 排除掉的数字m:161.0 排除掉的数字m:166.0 排除掉的数字m:171.0 排除掉的数字m:176.0 排除掉的数字m:181.0 排除掉的数字m:186.0 排除掉的数字m:191.0 排除掉的数字m:196.0 排除掉的数字m:201.0 排除掉的数字m:206.0 排除掉的数字m:211.0 排除掉的数字m:216.0 排除掉的数字m:221.0 排除掉的数字m:226.0 排除掉的数字m:231.0 排除掉的数字m:236.0 排除掉的数字m:241.0 排除掉的数字m:246.0 排除掉的数字m:251.0 排除掉的数字m:256.0 排除掉的数字m:261.0 排除掉的数字m:266.0 排除掉的数字m:271.0 排除掉的数字m:276.0 排除掉的数字m:281.0 排除掉的数字m:286.0 排除掉的数字m:291.0 排除掉的数字m:296.0 排除掉的数字m:301.0 排除掉的数字m:306.0 排除掉的数字m:311.0 排除掉的数字m:316.0 排除掉的数字m:321.0 排除掉的数字m:326.0 排除掉的数字m:331.0 排除掉的数字m:336.0 排除掉的数字m:341.0 排除掉的数字m:346.0 排除掉的数字m:351.0 排除掉的数字m:356.0 排除掉的数字m:361.0 排除掉的数字m:366.0 排除掉的数字m:371.0 排除掉的数字m:376.0 排除掉的数字m:381.0 排除掉的数字m:386.0 排除掉的数字m:391.0 排除掉的数字m:396.0 排除掉的数字m:401.0 排除掉的数字m:406.0 排除掉的数字m:411.0 排除掉的数字m:416.0 排除掉的数字m:421.0 排除掉的数字m:426.0 排除掉的数字m:431.0 排除掉的数字m:436.0 排除掉的数字m:441.0 排除掉的数字m:446.0 排除掉的数字m:451.0 排除掉的数字m:456.0 排除掉的数字m:461.0 排除掉的数字m:466.0 排除掉的数字m:471.0 排除掉的数字m:476.0 排除掉的数字m:481.0 排除掉的数字m:486.0 排除掉的数字m:491.0 排除掉的数字m:496.0 排除掉的数字m:501.0 排除掉的数字m:506.0 排除掉的数字m:511.0 排除掉的数字m:516.0 排除掉的数字m:521.0 排除掉的数字m:526.0 排除掉的数字m:531.0 排除掉的数字m:536.0 排除掉的数字m:541.0 排除掉的数字m:546.0 排除掉的数字m:551.0 排除掉的数字m:556.0 排除掉的数字m:561.0 排除掉的数字m:566.0 排除掉的数字m:571.0 排除掉的数字m:576.0 排除掉的数字m:581.0 排除掉的数字m:586.0 排除掉的数字m:591.0 排除掉的数字m:596.0 排除掉的数字m:601.0 排除掉的数字m:606.0 排除掉的数字m:611.0 排除掉的数字m:616.0 排除掉的数字m:621.0 排除掉的数字m:626.0 排除掉的数字m:631.0 排除掉的数字m:636.0 排除掉的数字m:641.0 排除掉的数字m:646.0 排除掉的数字m:651.0 排除掉的数字m:656.0 排除掉的数字m:661.0 排除掉的数字m:666.0 排除掉的数字m:671.0 排除掉的数字m:676.0 排除掉的数字m:681.0 排除掉的数字m:686.0 排除掉的数字m:691.0 排除掉的数字m:696.0 排除掉的数字m:701.0 排除掉的数字m:706.0 排除掉的数字m:711.0 排除掉的数字m:716.0 排除掉的数字m:721.0 排除掉的数字m:726.0 排除掉的数字m:731.0 排除掉的数字m:736.0 排除掉的数字m:741.0 排除掉的数字m:746.0 排除掉的数字m:751.0 排除掉的数字m:756.0 排除掉的数字m:761.0 排除掉的数字m:766.0 排除掉的数字m:771.0 排除掉的数字m:776.0 排除掉的数字m:781.0 排除掉的数字m:786.0 排除掉的数字m:791.0 排除掉的数字m:796.0 排除掉的数字m:801.0 排除掉的数字m:806.0 排除掉的数字m:811.0 排除掉的数字m:816.0 排除掉的数字m:821.0 排除掉的数字m:826.0 排除掉的数字m:831.0 排除掉的数字m:836.0 排除掉的数字m:841.0 排除掉的数字m:846.0 排除掉的数字m:851.0 排除掉的数字m:856.0 排除掉的数字m:861.0 排除掉的数字m:866.0 排除掉的数字m:871.0 排除掉的数字m:876.0 排除掉的数字m:881.0 排除掉的数字m:886.0 排除掉的数字m:891.0 排除掉的数字m:896.0 排除掉的数字m:901.0 排除掉的数字m:906.0 排除掉的数字m:911.0 排除掉的数字m:916.0 排除掉的数字m:921.0 排除掉的数字m:926.0 排除掉的数字m:931.0 排除掉的数字m:936.0 排除掉的数字m:941.0 排除掉的数字m:946.0 排除掉的数字m:951.0 排除掉的数字m:956.0 排除掉的数字m:961.0 排除掉的数字m:966.0 排除掉的数字m:971.0 排除掉的数字m:976.0 排除掉的数字m:981.0 排除掉的数字m:986.0 排除掉的数字m:991.0 排除掉的数字m:996.0 排除掉的数字m:1001.0 排除掉的数字m:1006.0 排除掉的数字m:1011.0 排除掉的数字m:1016.0 排除掉的数字m:1021.0 排除掉的数字m:1026.0 排除掉的数字m:1031.0 排除掉的数字m:1036.0 排除掉的数字m:1041.0 排除掉的数字m:1046.0 排除掉的数字m:1051.0 排除掉的数字m:1056.0 排除掉的数字m:1061.0 排除掉的数字m:1066.0 排除掉的数字m:1071.0 排除掉的数字m:1076.0 排除掉的数字m:1081.0 排除掉的数字m:1086.0 排除掉的数字m:1091.0 排除掉的数字m:1096.0 排除掉的数字m:1101.0 排除掉的数字m:1106.0 排除掉的数字m:1111.0 排除掉的数字m:1116.0 排除掉的数字m:1121.0 排除掉的数字m:1126.0 排除掉的数字m:1131.0 排除掉的数字m:1136.0 排除掉的数字m:1141.0 排除掉的数字m:1146.0 排除掉的数字m:1151.0 排除掉的数字m:1156.0 排除掉的数字m:1161.0 排除掉的数字m:1166.0 排除掉的数字m:1171.0 排除掉的数字m:1176.0 排除掉的数字m:1181.0 排除掉的数字m:1186.0 排除掉的数字m:1191.0 排除掉的数字m:1196.0 排除掉的数字m:1201.0 排除掉的数字m:1206.0 排除掉的数字m:1211.0 排除掉的数字m:1216.0 排除掉的数字m:1221.0 排除掉的数字m:1226.0 排除掉的数字m:1231.0 排除掉的数字m:1236.0 排除掉的数字m:1241.0 排除掉的数字m:1246.0 排除掉的数字m:1251.0 排除掉的数字m:1256.0 排除掉的数字m:1261.0 排除掉的数字m:1266.0 排除掉的数字m:1271.0 香蕉个数:3121.0 Disconnected from the target VM, address: '127.0.0.1:57298', transport: 'socket' Process finished with exit code 0
直接解法(外国的一位数学家给出的解法)
此解法,本人没看太明白,看懂的望留言解释一下,互相学习。
解题大致过程:
假如第一个猴子看到的香蕉个数为-4
那么 (-4-1)/5*4仍然等于-4,
依次类推第五个猴子拿走桃子后剩余的桃子个数仍然为-4,
可得-4是一个不变值。
由于-4是一个特解因此-4 + 5^5仍然是特解所以-4 + 3125 = 3121。



