LQBv5-Python题:排他平方数

题目标题: 排它平方数

小明正看着 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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicky__3021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值