回 帖 发 新 帖 刷新版面

主题:这道题应如何优化?

    TEN
    TEN
+ FORTY
-------
  SIXTY
求出每个字母所代表的数字,每个字母代表的数字各不相同。
这道题应如何优化呢?

回复列表 (共3个回复)

沙发

不用搜索,直接解方程如何?

板凳

Program ex;
Const
  n = 0;
  e = 5;
Type
  set1 = set of 0..10;
Var
  a1, a2, a3, a4, a5, f, o, r, t, y, s, i, x : Integer;
  b: Set1;
Begin
  assign(output,'e:\plus.out');
  Rewrite(output);
  For f:=0 To 9 Do
    For o:=0 To 9 Do
      For r:=0 To 9 Do
        For t:=0 To 9 Do
          For y:=0 To 9 Do
                    If [f,o,r,t,y,n,e]=[0..9]
                    Then Begin
                      b := [0..9]-[f,o,r,t,y,n,e];
                      a1 := t*200+e*20+2*n+f*10000+o*1000+r*100+t*10+y;
                      s := a1 div 10000;
                      i := a1 div 1000;
                      x := a1 div 100;
                      If b-[s,i,x]=[]
                      Then Begin
                        write(t,e,n);
                        Writeln;
                        Write(f,o,r,t,y);
                        Writeln;
                        Write(s,i,x,t,y);
                        Writeln;
                      End;
                    End;
  Close(output);
End.

程序已经优化到这个地步了,不过恐怕条件写错了,做不出结果了

3 楼

观察:
    T50
    T50
+ F9RTY
-------
  S1XTY
易得
N=0
E=5
O=9
I=1
剩下的有关系 2T+R+1=20+X S=F+1
剩下的数字有 2 3 4 6 7 8
容易得到T>5
如果T=6,R不存在
如果T=7,R>5,若R=6,X=1矛盾,若R=8,X=3可行(1)
如果T=8,R>3,若R=4,X=1矛盾,若R=6,X=3可行(2),若R=7,X=4可行(3)
(1)剩下2 4 6,不满足S=F+1
(2)剩下2 4 7,不满足S=F+1
(3)剩下2 3 6,则S=3,F=2,剩下最后一个Y=6
综合只有一个解:
N=0 I=1 F=2 S=3 X=4 E=5 Y=6 R=7 T=8 O=9
写成竖式:
    850
    850
+ 29786
-------
  31486

我来回复

您尚未登录,请登录后再回复。点此登录或注册