用C++解越南小学三年级数学题

据悉题目来自越南保禄小学三年班,学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。

河内一家人才培育中心的副总监陈方表示,题目只需用到基本运算技巧,他邀请一些成年人挑战,包括拥有经济学博士学位的人,不过全部人都答不出来。

人力很难办到的事情,用计算机来解决就简单多了。我们使用C++程序设计语言,采用穷举法来计算这道题目。穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。

在原题所列空框内,依次填列a, b, c, d, e, f, g, h, i的未知数,如下图所示:

根据上图列式可得:a+13*b/c+d+12*e-f-11+g*h/i-10 = 66

进一步化简上式得:a+13*b/c+d+12*e-f+g*h/i = 87

已知a, b, c, d, e, f, g, h, i的取值区间为[1,9],所以穷举计算有9*9*9*9*9*9*9*9*9=9^9=387420489种判定,我们要从总判定数中筛选出符合等式成立的结果。由未知数个数可确定循环为9层。每层从1递增至9,步长为1。这样我们可以很容易写出源码。

在Windows 7 64位简体中文专业版和C++ Builder 2010集成开发环境下的控制台程序源码:

//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <iostream>

using namespace std;
//---------------------------------------------------------------------------

#pragma argsused

int _tmain(int argc, _TCHAR* argv[])
{
	float a, b, c, d, e, f, g, h, i;  //设置9个未知数
	int counter = 0;       //计数器
	const int MY_MAX = 10;  //1-9范围内的数字
	for(a = 1.0; a < MY_MAX; a=a+1)
	for(b = 1.0; b < MY_MAX; b=b+1)
	for(c = 1.0; c < MY_MAX; c=c+1)
	for(d = 1.0; d < MY_MAX; d=d+1)
	for(e = 1.0; e < MY_MAX; e=e+1)
	for(f = 1.0; f < MY_MAX; f=f+1)
	for(g = 1.0; g < MY_MAX; g=g+1)
	for(h = 1.0; h < MY_MAX; h=h+1)
	for(i = 1.0; i < MY_MAX; i=i+1)
	{
		// a+13*b/c+d+12*e-f-11+g*h/i-10 == 66.0
		if (a+13*b/c+d+12*e-f+g*h/i == 87.0)   //计算方程式的值,判断是否是一组解
		{
		     cout << "[" << ++counter << "]\t";
			 cout << "a=" << a << "; ";
			 cout << "b=" << b << "; ";
			 cout << "c=" << c << "; ";
			 cout << "d=" << d << "; ";
			 cout << "e=" << e << "; ";
			 cout << "f=" << f << "; ";
			 cout << "g=" << g << "; ";
			 cout << "h=" << h << "; ";
			 cout << "i=" << i << ";\n";
		}
	}
	system("PAUSE");
	return 0;
}
//---------------------------------------------------------------------------

程序运行部分结果如下图:

时间: 2024-08-05 11:00:30

用C++解越南小学三年级数学题的相关文章

我也来试试“越南小学三年级数学题难倒博士”的难题

今天的百度排行榜,一个标题为”越南数学题难倒博士“的新闻热点吸引了我,于是猛戳 原文链接为:http://news.sina.com.cn/w/p/2015-05-21/100531859030.shtml: 题目大致是这样的: 学生需要由上至下.从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式. 河内一家人才培育中心的副总监陈方表示,题目只需用到基本运算技巧,他邀请一些成年人挑战,包括拥有经济学博士学位的人,不过全部人都答不出来. 在越南教育科学研究所修读

越南小学三年级一道数学题解答

看到这则新闻后觉得有点无语,这道题也难的没那么夸张,写程序的话也简单,希望媒体报道的新闻像个新闻,别什么事都当新闻报,倒是希望多报一些关于科技和经济的一些有价值的新闻.废话少说,直接上代码了. #include<iostream> #include<stdlib.h> #include<fstream> #include<time.h> using namespace std; int main(){ fstream outfile; outfile.ope

三年级计算

三年级计算题 211606390 张晋誌 211606329 王浩 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 65 ? Estimate ? 估计这个任务需要多少时间 60 65 Development 开发 590 1195 ? Analysis ? 需求分析 (包括学习新技术) 90 120 ? Design Spec ? 生成设计文档 30 60 ? Design Rev

小学奥数读本(三年级),P133第12题

小学奥数读本(三年级),P133第12题. 用一到八,八个数,组成一道除法算式:口口口口÷口=口口口 这题有两个答案: 453*6=2718 582*3=1746 用pascal编程解决,解法一: 1 var 2 i,j:longint; 3 s:set of char; 4 st:string; 5 begin 6 for i:=123 to 987 do 7 for j:=1 to 8 do begin 8 s:=[]; 9 str(i,st); 10 s += [st[1]]+[st[2]

小学奥数读本(三年级),P133第13题

小学奥数读本(三年级),P133第13题. 用一到九,九个数,组成一道除法算式:口口口口×口=口口口口 1 var 2 i,j,k:longint; 3 s:set of 0..9; 4 begin 5 for i:=1234 to 9876 do 6 for j:=2 to 9 do begin 7 s:=[]; 8 s += [j]; 9 k:=i; 10 while(k>0) do begin 11 s += [k mod 10]; 12 k := k div 10; 13 end; 14

小学奥数读本(三年级),P140第9题

小学奥数读本(三年级),P140第9题. 一共可以有四种情况,这四种情况下,周长各不相同. 小学奥数读本(三年级),P140第9题,布布扣,bubuko.com

[Android下载]2014北京新版小学英语三年级上册点读手机软件

小学英语三年级上册点读软件.根据2014年北京教改版教材编写,发音标准.实现点读功能.点到哪里读到哪里.哪里不会点哪里!北京教育科学研究院编写,北京出版社出版.ISBN:9787200108781 APK安装包下载:点击这里 http://pan.baidu.com/s/1jGoTs2q 应用预览:

用Green定理解一道据说是小学六年级的平面几何数学题

原始问题 从微博看到的, 求面积的, 这道题大致是: 蓝色的扇形阴影对应于 r=4cm 圆心角 90o,红色圆半径 R=8cm, E 是 半径 AF的中点.求红色和蓝色阴影部分总面积. 据说题出错了,小学六年级做不出来--所以,这道题也成了一道"求内心阴影面积"的题-- 解答 我想先解释下用Green定理来做这道题哲学上有什么意义.其实就是活学活用的时候,还得注意别搞错了.不经常使用和小心验证,往往简单的定理用错了还不知道自己错了. 思考: 为什么 Green 定理 允许只对 π3 圆

小学二年级四则运算题

一.题目要求 产生300道小学二年级的四则运算的数学题,减法不能出现负数,除法要整除. 二.编写过程 编写产生30道小学二年级的四则运算的数学题,用rand()产生随机数,和随机的符号,在除法运算中在被除数不为零的情况下利用一组随机数来产生被除数和除数是被除数的整数倍,这样保证了除法的整除,减法要先判断两个随机数的大小,输出的结果为大数减去小数.然后利用for循环30次输出30道题目. 三.程序运行 四.程序代码 #include<stdio.h>#include<stdlib.h>