其他篇 六月 02, 2017

解决一道智力题

文章字数 1.4k 阅读约需 1 mins. 阅读次数

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的倍数,但是后来就没有什么想法了。

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

            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的倍数来做写的话:

            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,稍微显得动了点头脑,但还是穷举法,有什么高大上的解法么???在下默默献上膝盖!

0%