题目标题: 排它平方数
小明正看着 203879 这个数字发呆。
原来,203879 * 203879 = 41566646641
这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
1. 6位正整数
2. 每个数位上的数字不同
3. 其平方数的每个数位不含原数字的任何组成数位
答案是一个6位的正整数。
解题思路:
一开始把字符串转换成了列表,会出现数字重复的情况,然后就想到把字符串转换成集合,这样就自动避免数位相同的情况了,当集合中元素有六个且不等于203879时,利用for循环遍历判断两个集合中的元素是否有相等的情况,然后利用result来进行条件的判断。果真是细节决定成败啊…
代码:
def vicky():
for x in range(100000, 1000000):
y = x**2
l1 = set(str(x))
result = 1
if len(l1) == 6 and x != 203879:
l2 = set(str(y))
for i in l1:
result = 0
if i in l2:
break
else:
result = 2
if result == 2:
return x
print(vicky())
# 输出结果如下
639172