2015年5月25日讯,近日,网上出现一条据称是给越南三年级、8岁小学生做的数学难题,却难倒不少家长、老师甚至是博士。这个难题引起了外媒的广泛关注。到底是什么样的题目竟然连博士也不会做?小伙伴们都赶紧来看看! #include <Windows.h> #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { for (int a=1;a<=9;++a) { for (int b=1;b<=9;++b) { for (int c=1;c<=9;++c) { for (int d=1;d<=9;++d) { for (int e=1;e<=9;++e) { for (int f=1;f<=9;++f) { for (int g=1;g<=9;++g) { for (int h=1;h<=9;++h) { for (int i=1;i<=9;++i) { if (a+13*b/c+d+12*e-f-11+g*h/i-10==66) { printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h,i); } } } } } } } } } } getchar(); return 0; } |
|
据悉题目来自越南保禄小学三年班,这道题要求同学们通过基本的加减乘除运算来为图中的空白处填上1到9的数字。虽然,说起来非常简单,但真正做起来却让“有才华”的网友们都大跌眼镜。
据悉,这道题连博士都不会做,为何这道题如此难呢?学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。 越南数学题难倒博士,小伙伴们你会不会做?据河内一家人才培育中心的副总监陈方表示,题目只需用到基本运算技巧,他邀请一些成年人挑战,包括拥有经济学博士学位的人,不过全部人都答不出来。 陈方指出,题目共有超过36万种可能的数字组合,当中只有很少能得出正确答案。 在越南教育科学研究所修读博士学位的阮玉江则利用计算机程序,找出所有可能组合,结果竟“印满74张A4纸”。她称计算机能轻易计出答案,“但人脑肯定不容易”。其中一个正确的数字组合是1、1、1、1、1、3、7、9、1。 |
|
就想知道:是啥运算?
|
|
就上面那个图。加减乘除四则运算。 a+13*b/c+d+12*e-f-11+g*h/i-10==66 |
|
10分 |
越南用:表示除号么?
|
应该是。我开始也是猜的。+、-、×都有了,而且是小学生的题,应该是除了。 |
|
这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。
所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来 |
|
没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1 |
|
20分 |
肯定是都不同的,还要打满74张A4纸,估计他都找不出正确结果,用程序作非常简单,有20个解,考虑有互换,实际就5个解
#include <Windows.h> #include <stdio.h> #include <algorithm> /// next_permutation, sort using namespace std; int main() { int total =0; int a[9]={1,2,3,4,5,6,7,8,9}; do { if ((0==a[1]%a[2]) && 0==(a[6]*a[7]%a[8])) { if (a[0]+13*a[1]/a[2]+a[3]+12*a[4]-a[5]+a[6]*a[7]/a[8]==87) { printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]); total++; } } }while(next_permutation(a,a+9)); printf("total=%d\n",total); getchar(); return 0; } |
忘了考虑分数的问题,竟然分数也有解,结果是136,实际是34。。。
#include <Windows.h> #include <stdio.h> #include <algorithm> /// next_permutation, sort using namespace std; int main() { int total =0; int a[9]={1,2,3,4,5,6,7,8,9}; do { if (0==(a[1]*a[8]+a[6]*a[7]*a[2]) %(a[2]*a[8])) { if (a[0]+a[3]+12*a[4]-a[5]+ (13*a[1]*a[8]+a[2]*a[6]*a[7])/a[8]/a[2]==87) { printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]); total++; } } }while(next_permutation(a,a+9)); printf("total=%d\n",total); getchar(); return 0; } |
|
额,学习了。next_permutation |
|
不过题目是允许重复的。。 |
|
10分 |
1·9 不重复的答案肯定有,而且我之前看到答案后还验算过是正确的,第一个数是 5。
|
额 是有9楼的大神已经都找出来了 |