| 
 | 
 
前几天,有亲戚在微信亲戚圈贴出一道小学一年级算术题,说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; |   
 
 
 
 |