SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1727|回复: 1
打印 上一主题 下一主题

小学一年级数学题求解

[复制链接]

2

主题

13

帖子

40

积分

新手上路

Rank: 1

积分
40
跳转到指定楼层
楼主
发表于 2016-5-16 03:24:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前几天,有亲戚在微信亲戚圈贴出一道小学一年级算术题,说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;
分享到:  微信微信
收藏收藏
回复

使用道具 举报

2

主题

13

帖子

40

积分

新手上路

Rank: 1

积分
40
沙发
 楼主| 发表于 2016-5-16 03:38:20 | 只看该作者
注:
上面用于纸笔计算的表格可以帮助编程时减少循环次数,大大提高计算机解题速度。比如:
do a=1 to 4
而非:
do a=1 to 8
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-11-22 08:31 , Processed in 0.120830 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表