灌个水,越南题的答案,哈哈

翅膀又硬了 2015-05-27 09:13:57
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;
}
...全文
228 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
imyzcn 2015-05-27
  • 打赏
  • 举报
回复
这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。 所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 4 楼 ForestDB 的回复:
越南用:表示除号么?
应该是。我开始也是猜的。+、-、×都有了,而且是小学生的题,应该是除了。 而且文中“其中一个正确的数字组合是1、1、1、1、1、3、7、9、1” 这个组合也符合冒号表示除号。
ForestDB 2015-05-27
  • 打赏
  • 举报
回复
越南用:表示除号么?
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 2 楼 ForestDB 的回复:
就想知道:是啥运算?
就上面那个图。加减乘除四则运算。
a+13*b/c+d+12*e-f-11+g*h/i-10==66
ForestDB 2015-05-27
  • 打赏
  • 举报
回复
就想知道:是啥运算?
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
据悉题目来自越南保禄小学三年班,这道题要求同学们通过基本的加减乘除运算来为图中的空白处填上1到9的数字。虽然,说起来非常简单,但真正做起来却让“有才华”的网友们都大跌眼镜。 据悉,这道题连博士都不会做,为何这道题如此难呢?学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。 越南数学题难倒博士,小伙伴们你会不会做?据河内一家人才培育中心的副总监陈方表示,题目只需用到基本运算技巧,他邀请一些成年人挑战,包括拥有经济学博士学位的人,不过全部人都答不出来。 陈方指出,题目共有超过36万种可能的数字组合,当中只有很少能得出正确答案。 在越南教育科学研究所修读博士学位的阮玉江则利用计算机程序,找出所有可能组合,结果竟“印满74张A4纸”。她称计算机能轻易计出答案,“但人脑肯定不容易”。其中一个正确的数字组合是1、1、1、1、1、3、7、9、1。
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 12 楼 imyzcn 的回复:
1·9 不重复的答案肯定有,而且我之前看到答案后还验算过是正确的,第一个数是 5。 [quote=引用 7 楼 yunchao630 的回复:] [quote=引用 6 楼 imyzcn 的回复:] 这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。 所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来
没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1[/quote][/quote]额 是有9楼的大神已经都找出来了
imyzcn 2015-05-27
  • 打赏
  • 举报
回复
1·9 不重复的答案肯定有,而且我之前看到答案后还验算过是正确的,第一个数是 5。
引用 7 楼 yunchao630 的回复:
[quote=引用 6 楼 imyzcn 的回复:] 这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。 所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来
没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1[/quote]
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 9 楼 nice_cxf 的回复:
忘了考虑分数的问题,竟然分数也有解,结果是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;
}
不过题目是允许重复的。。 据悉,这道题连博士都不会做,为何这道题如此难呢?学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 8 楼 nice_cxf 的回复:
肯定是都不同的,还要打满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;
}
额,学习了。next_permutation
nice_cxf 2015-05-27
  • 打赏
  • 举报
回复
忘了考虑分数的问题,竟然分数也有解,结果是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;
}
nice_cxf 2015-05-27
  • 打赏
  • 举报
回复
肯定是都不同的,还要打满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;
}
翅膀又硬了 2015-05-27
  • 打赏
  • 举报
回复
引用 6 楼 imyzcn 的回复:
这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。 所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来
没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧