朋友圈里看到一篇帖子:
一筐鸡蛋: 1个1个拿,正好拿完。 2个2个拿,还剩1个。 3个3个拿,正好拿完。 4个4个拿,还剩1个。 5个5个拿,还剩4个。 6个6个拿,还剩3个。 7个7个拿,正好拿完。 8个8个拿,还剩1个。 9个9个拿,正好拿完。 问筐里有多少鸡蛋?
作为一个曾经的“学霸”,碰到这种问题总是如同强迫症发作一样,不解决就看着难受。
果然,这种题目看似小学生都能解,其实真要一板一眼推理出来,还真不简单。好吧,推理不是咱的强项,那就用“暴力”解决问题吧。写一段程序,让电脑帮我筛选符合条件的数字也是一种方法呀。
代码如下:
package iJava;
public class TargetNumber
{
public static void main(String[] args)
{
int targetNumber=1;
int count=0;
boolean condition=false;
int[] numbers=new int[10];
while (count!=10){
targetNumber++;
condition=(targetNumber%2==1)&&(targetNumber%3==0)
&&(targetNumber%4==1)&&(targetNumber%5==4)
&&(targetNumber%6==3)&&(targetNumber%7==0)
&&(targetNumber%8==1)&&(targetNumber%9==0);
if (condition){
count++;
numbers[count-1]=targetNumber;
}
}
System.out.println("Target Number are:");
for (int i=1;i<=numbers.length;i++){
System.out.println(numbers[i-1]);}
}
}
运行结果:
Target Number are:
1449
3969
6489
9009
11529
14049
16569
19089
21609
24129
不难发现,结果是一个等差数列:1449+2520*(n-1),其中2520为数字1至9这9个数的最小公倍数(Excel公式为:LCM())
有了这段代码,管你什么类型的“一筐鸡蛋”,只要稍微改改代码,就可迅速获取答案。
如:韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。
Target Number are:
104
209
314
419
524
629
734
839
944
1049
当然,如果我们不会编程,那只能回退到推理的老路上来了。以下内容转自网络,算是比较专业的解法。
“