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

C++语言 码拜 10年前 (2015-05-11) 1154次浏览 0个评论
 

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。

就想知道:是啥运算?
引用 2 楼 ForestDB 的回复:

就想知道:是啥运算?

就上面那个图。加减乘除四则运算。

a+13*b/c+d+12*e-f-11+g*h/i-10==66
10分
越南用:表示除号么?
引用 4 楼 ForestDB 的回复:

越南用:表示除号么?

应该是。我开始也是猜的。+、-、×都有了,而且是小学生的题,应该是除了。
而且文中“其中一个正确的数字组合是1、1、1、1、1、3、7、9、1”   这个组合也符合冒号表示除号。

这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。

所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来

引用 6 楼 imyzcn 的回复:

这道题我也看到过,但是原题好像是填写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;
}
引用 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

引用 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的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。

10分
1·9 不重复的答案肯定有,而且我之前看到答案后还验算过是正确的,第一个数是 5。

引用 7 楼 yunchao630 的回复:
Quote: 引用 6 楼 imyzcn 的回复:

这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。

所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来

没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1

引用 12 楼 imyzcn 的回复:

1·9 不重复的答案肯定有,而且我之前看到答案后还验算过是正确的,第一个数是 5。

Quote: 引用 7 楼 yunchao630 的回复:
Quote: 引用 6 楼 imyzcn 的回复:

这道题我也看到过,但是原题好像是填写1~9时,数字不能重复,而且运算方式是图示的顺序,并非四则运算(先乘除后加减)的顺序。

所以正确答案其实应该只有一个,或者少数几个。虽然我也没算出来

没有不重复的组合。有一个最小组合1,1,1,1,6,1,1,1,1

额  是有9楼的大神已经都找出来了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明灌个水,越南题的答案,哈哈
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!