|
发表于 2003-7-19 15:15:54
|
显示全部楼层
WSM 有点粗心了,有重复数字.
我算出的答案只有两个
3 * 582 = 1746
6 * 453 = 2718
下面是我用python写出来的. 不过没有什么层次,但做这些题目,还是可以的,在java中也类似.
假如不太介意速度不过这里也不会太有问题 ,我觉得我的做法很直观. 用一个1位数X3位数.
得出一个4位数, 然后分别把它们转为字符型.然后对每个字符计数(我用了hash datatype来实现),java中完全可以这样做.
[code:1]
for i in range(2,8):
for a in range(101,999):
c= i*a
if c>1000 and c<10000:
Dic={'1':0,
'2':0,
'3':0,
'4':0,
'5':0,
'6':0,
'7':0,
'8':0,
}
sC=str(c)
sA=str(a)
sI=str(i)
Dic[sI]=Dic[sI]+1
iLegal = 0
if iLegal==1:
continue
for digi in sA:
if digi is '0':
iLegal=1
break
if digi is '9':
iLegal=1
break
Dic[digi]=Dic[digi] + 1
if Dic[digi] > 1:
iLegal=1
break
for digi in sC:
if digi is '0':
iLegal=1
break
if digi is '9':
iLegal=1
break
Dic[digi]=Dic[digi] + 1
if Dic[digi] > 1:
iLegal=1
break
if iLegal==1:
continue
else:
print sI + " * " +sA +" = " + sC[/code:1] |
|