解决一道智力题

Im Back

今天被问了一道题,是这样的:

求解:一筐鸡蛋:
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个,这是这个题目的一个小陷阱…

我第一反应想到的是这个数一定是63的倍数,但是后来就没有什么想法了。

再后来,我想到了一个残暴的方法,穷举法

1
2
3
4
5
6
7
8
9
10
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;

能被7整除,能被9整除,所以肯定是63的倍数
如果利用63的倍数来做写的话:

1
2
3
4
5
6
7
8
9
int i = 1;
while (true) {
int num = 63 *i;
if (num%5==4&&num%6==3&&num%8==1) {
System.out.println("鸡蛋数=" + num);
break;
}
i++;
}

答案依旧是1449,稍微显得动了点头脑,但还是穷举法,有什么高大上的解法么???在下默默献上膝盖!