Saturday, February 11, 2017

问筐里最少有多少鸡蛋?

群里有人问

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

已经有才女给了答案和推理:

从7、9得出是63,从2得出必须是奇数,从5得出个数只能是9,所以试试63x3、63x13、63x23就知道啦

下面是一个程序猿的答案:

use List::Util qw(max);
my %eggs = ( 2 =>1, 3 =>0, 4 =>1, 5 =>-1, 6 =>3, 7 =>0, 8 =>1, 9 =>0);
my $highest;
do { $highest = max values %eggs; } while (valuate($highest) == 0);
print "There are [$highest] eggs \n";

sub valuate {
    my $highest = shift;
    foreach my $key ( 2 .. 9 ) {
        while ($eggs{$key} < $highest) { $eggs{$key} += $key; }
        if ($eggs{$key} > $highest) { return 0; }
    }
    return $highest;
}

如果你安装了 Perl, 可以拷贝转一下。

今天是元宵节, 你可以把鸡蛋换成元宵, 筐换成锅, 看看需要多大的锅 (图来自同学):
元宵节愉快!

No comments:

Post a Comment