2017年华罗庚数学竞赛第9题用信息学求解

2022-08-02 已有0人阅读 作者: IT航班

【关键词

       中小学编程;信息学编程;IT航班;奥林匹克;北京少儿编程;北京中小学编程;

 

【美联航达导读

       奥数与信息学奥赛具有天然的联系,两者可以相互促进。很多问题奥数上叫猜测,孩子从一些特殊数值不断去测试是否满足条件(相等、大于、等于、加一、减一、平方等)。信息学奥赛叫穷举,让计算机去试。今天一位家长问的试题,我们通过常规数学不断试数据,另外一种方法通过计算机来测试。做个对比,更深刻认知编程。

 无标题.png

 

1、试题:

2017年华罗庚数学竞赛小学中年级初赛试题第9题。 

11个方队(正方形实心方队)中的每一个都是由数量相同的士兵组成,如果算上将军,就可以组成一个大的攻击方队.则原来方队里最少要有士兵        人.

 无标题2.png

2、读题:

正方形方阵的特点是:行、列数相等。例如,1的方阵总数是1个,2的方阵总数是4,3的方阵总数是9,4的方阵总数是16。

无标题3.png

3、数学分析

常规解法:设未知数,列方程、如果多个未知数,开始猜。


 假设原来每个方阵每行有a人(每列也有a人),则11个方阵共有:

11×a×a名士兵

 

现在增加了1名将军,仍然可以组成一个大的方阵(假设新方阵每行有b人),故:

11×a×a + 1 = b×b

 

4、孩子猜测(社会发展就是从猜测起步的,但是要会猜测)

这个“方程”中有2个未知数,我们可以“猜答案”,问题希望原来方阵中士兵数最少——a最小,所以我们就从最小的值开始猜:

若a = 1,则:11×1×1 + 1 = 12 = b×b,没有满足条件的b;

若a = 2,则:11×2×2 + 1 = 45 = b×b,没有满足条件的b;

若a = 3,则:11×3×3 + 1 = 100 = b×b,b = 10!

无标题5.png

所以,原来一个方阵中最少有——3×3=9名士兵。这需要不断的实验,花费很多时间。如果计算机,怎么做呢?

5、编程猜测:一眨眼功夫答案就出来了

#include <iostream>

using namespace std;

 

int main()

{

for(int b = 1; b < 100;  b++)

{

    for(int a = 1; a < b;  a++)

    {

        if(11*a*a+1 == b*b)//数学公式放在这里了。

        {

            cout<<a<<”\t”<<b<<endl;

            break;

}

}

}

    return 1;

6、为什么要编程:

为什么要编程呢,就是有些问题猜测数字太多,人都迷糊了,还没有猜测出来。而计算机不会迷糊,更不会累,也不要吃饭,猜测的又快又准。所以,复杂的猜测用编程来解决。

无标题4.png

以后我们多找一些奥数的题目,用编程来解决。

 


联系方式:

A、官方网址:

http://www.itflight.net


B、微信公众号:

添加微信,获取资料。

image.png

 



关注公众号,获取动态。

image.png