这一期的问题还是一个在三位数当中寻找某些数字的问题.
[题目]
用1,2,3...9 组成3个三位数abc, edf, ghi, 每个数字恰好使用一次,
他们之间的比是 abc:edf:ghi == 1:2:3
[输出]
找到并输出所有符合条件的 "abc edf ghi"
[分析]
因为数字里不包括0,所以我们知道3位数的范围应该大概位于 111 --- 999 之间.
因为1:2:3的比例关系, 所以推断出abc的范围大概位于 111 --- 333之间.
我们这里利用字符串处理和集合的唯一性来得到我们需要的结果.
当然,思路和算法不止一种,但这一次我还是结合Python语言的自身特点写出一段比较Pythonic的代码.
[运行结果]

[代码]
def test():
for abc in range(111,333):
ijk = abc *2
xyz = abc *3
a,b,c = [int(x) for x in str(abc)]
i,j,k = [int(x) for x in str(ijk)]
x,y,z = [int(x) for x in str(xyz)]
s = set([a,b,c,i,j,k,x,y,z])
s.discard(0) # 把0去掉,如果还有9个数据的话,就代表1~9都使用了, 因为set里的元素都是惟一的.
if len(s)==9:
print(abc, ijk, xyz)
if __name__=="__main__":
test()


