求这样一个6位整数,这个整数由6个不同的数字构成,将它乘以2、或者3、或者4、或者5、或者6后得到不同的6位数,这些不同的6位数都由跟原数字相同的6个数字构成。提示:使用集合。
简单来说,可以遍历100000到999999的整数,首先将数字转为字符串再转为集合,集合长度不是6的直接下一轮循环(因为题目说这个整数由6个不同的数字构成)。然后分别判断这个数字形成的集合和这个数字乘一个常数形成的集合的交集,如果交集长度不为6,说明不满足“这些不同的6位数都由跟原数字相同的6个数字构成。”,直接下一轮循环,直至满足所有条件,将当前循环中的i打印。
for i in range(100000,1000000):
if (len(set(str(i))) != 6):
continue
elif(len(set(str(i)) & set(str(i*2))) != 6):
continue
elif(len(set(str(i)) & set(str(i*3))) != 6):
continue
elif(len(set(str(i)) & set(str(i*4))) != 6):
continue
elif(len(set(str(i)) & set(str(i*5))) != 6):
continue
elif(len(set(str(i)) & set(str(i*6))) != 6):
continue
else:
print(i)