凤凰山笔记

程序猿是如何解智力题的

晚上被问了一个智力题,题目如下:

求解:一筐鸡蛋:
1个1个拿,正好拿完
2个2个拿,还剩1个
3个3个拿,正好拿完
4个4个拿,还剩1个
5个5个拿,还差1个
6个6个拿,还剩3个
7个7个拿,正好拿完
8个8个拿,还剩1个
9个9个拿,正好拿完
问筐里最少有多少鸡蛋

能算出这道题的智商不一般!求答案?有高手没,算算吧!

友情提示,”5个5个拿,是还差1个“,也就是还剩下4个,这是这个题目的一个小陷阱…

下面会公布答案,请先忍住往下看,自己下解一下

看到这个问题的我,一脸懵逼,首先某度了一下,结果发现问题描述不一样,答案是错的…

于是顺手打开了eclipse,写了个憋足的java程序,瞬间就解出了这个问题,以下是java代码的回答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {

int i = 1;
while(true){
System.out.println(i);
if(i%2==1&&i%3==0&&i%4==1&&i%5==4&&i%6==3&&i%7==0
&&i%8==1&&i%9==0){
System.out.println("正确答案="+i);
break;
}
i++;
}

}

运用无耻的穷举法,运行结果应该是1449

又拿这个问题问wenchao同学,又出现了javascript版本的答案:

1
2
3
4
5
6
7
for (let i = 1; i+=2;) {
let number = 63*i;
if (number%5==4&&number%6==3&&number%8==1) {
console.log(number);
break;
}
}

这个穷举法稍微先进了一些,运用了结果应该能被63整除这个事实,运行结果也是1449

好吧,以下正确的解答由夏博士提供:

首先,能被7整除,能被9整除,所以肯定是63的倍数

5个5个拿,还差1个,所以个位数肯定是4或者9

又因为两个两个拿剩下一个,肯定是个奇数,排除个位数是4的情况,所以个位数肯定是9,那么这个倍数的位数一定是3

3不对

13不对

23对了,63*23 = 1449

果然是博士智力水平就是高,默默献上膝盖!

cloudroc wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
很惭愧,只做了些微小的工作,您的支持将鼓励我继续努力创作!