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