SAS中文论坛

标题: 小学一年级数学题求解 [打印本页]

作者: BioSas    时间: 2016-5-16 03:24
标题: 小学一年级数学题求解
前几天,有亲戚在微信亲戚圈贴出一道小学一年级算术题,说10个人中只有一个人能解出。现用代数语言表达该题如下:

8个变量a, b, c, d, e, f, g, h 在1到8范围内各取不同值, 求解下列4个等式中此8个变量的赋值:

1.   a+b=9
2.   c+d=7
3.   e-f=1
4.   g-h=2

本人可以证明,第4等式的g-h之差,若是双数2, 4或6,此题无解;若是单数1, 3, 5 或7,则此题可解。估计原题是把第四等式写错了。

如果把上面第四等式改为g-h=3,则有下列3组且只有3组的解:

第1组:
1+8=9
3+4=7
7-6=1
5-2=3

第2组:
2+7=9
1+6=7
4-3=1
8-5=3

第3组:
3+6=9
2+5=7
8-7=1
4-1=3.

即:
a=1, 2, 3
b=8, 7, 6

c=3, 1, 2
d=4, 6, 5

e=7, 4, 8
f=6, 3, 7

g=5, 8, 4
h=2, 5, 1

如用纸和笔解此题,大概是这样的:

只使用1, 2, 3, 4, 5, 6, 7, 8这八个数,4个等式的所有可能数字配对如下:
------------------------------------------------------
第1列     | 第2列   |第3列     |第4列
(a+b=9) |(c+d=7) | (e-f=1)  |(g-h=3)
-------------|-------------|--------------|-------------
1+8,       | 1+6,      |   8-7,       |  8-5,
2+7,       |  2+5,     |   7-6,       |  7-4,
3+6,       |  3+4.     |   6-5,       |  6-3,
4+5. .....|..............|    5-4,      |  5-2,
..............|..............|   4-3,       |  4-1.
.............|..............|   3-2,       |
.............|..............|    2-1.      |

把上面4列数字每一对逐一对比即可得到各组答案。比如第1列取第一对1+8,因为8个数字每个只能取用一次,第2列第一对1+6因为有数字 1,所以不能用,可取的只有2+5或3+4。如第二列取3+4, 则第3列可取的有7-6或6-5。如第3列取7-6, 则第4列可取的只有5-2. 其它解以相同方式类推。

如果用循环语句编程,微机用0.1秒钟就能得出此3组唯一解。

下面是用SAS软件编的解题程序:

data output;
array ar(8) a b c d e f g h;
do a=1 to 4;
   do b=8 to 5 by -1;
      do c=1 to 3;
        do d=6 to 4 by -1;
          do e=8 to 2 by -1;
          do f=7 to 1 by -1;
          do g=8 to 4 by -1;
          do h=5 to 1 by -1;
          Same=0;
          do i=1 to 7;
          do  j=i+1 to 8;
          if ar(i)=ar(j) then
          Same=1;
          end;
          end;
          if Same=0 and
          a+b=9 and
          c+d=7 and
          e-f=1 and
          g-h=3
          then output;
          drop i j Same;
          end;
          end;
          end;
          end;
          end;
          end;
          end;
         end;
run;
作者: BioSas    时间: 2016-5-16 03:38
注:
上面用于纸笔计算的表格可以帮助编程时减少循环次数,大大提高计算机解题速度。比如:
do a=1 to 4
而非:
do a=1 to 8





欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2