今天的百度排行榜,一个标题为”越南数学题难倒博士“的新闻热点吸引了我,于是猛戳
原文链接为:http://news.sina.com.cn/w/p/2015-05-21/100531859030.shtml:
题目大致是这样的:
学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。
河内一家人才培育中心的副总监陈方表示,题目只需用到基本运算技巧,他邀请一些成年人挑战,包括拥有经济学博士学位的人,不过全部人都答不出来。
在越南教育科学研究所修读博士学位的阮玉江则利用计算机程序,找出所有可能组合,结果竟“印满74张A4纸”。她称计算机能轻易计出答案,“但人脑肯定不容易”
这题目,的确很坑,实际上这就是一个可重复排列组合的筛选问题,入门级的程序员都可以轻松搞定:
class Program { static void Main(string[] args) { int resultCount = 0; for (int i1 = 1; i1 <= 9; i1++) { for (int i2 = 1; i2 <= 9; i2++) { for (int i3 = 1; i3 <= 9; i3++) { for (int i4 = 1; i4 <= 9; i4++) { for (int i5 = 1; i5 <= 9; i5++) { for (int i6 = 1; i6 <= 9; i6++) { for (int i7 = 1; i7 <= 9; i7++) { for (int i8 = 1; i8 <= 9; i8++) { for (int i9 = 1; i9 <= 9; i9++) { if (i1 + 13 * i2 / i3 + i4 + 12 * i5 - i6 - 11 + i7 * i8 / i9 - 10 == 66) { Console.WriteLine(i1 + "," + i2 + "," + i3 + "," + i4 + "," + i5 + "," + i6 + "," + i7 + "," + i8 +","+ i9); resultCount++; } } } } } } } } } } Console.WriteLine("答案总数:" + resultCount); Console.ReadLine(); } }
控制台程序执行完成,打印结果如下:
如果不是运用计算机的处理速度,就算是神童,让他来解这题,估计也要醉了。
时间: 2024-10-11 00:26:45