leetcode刷题笔记-906-枚举+思维

题目链接:https://leetcode-cn.com/problems/super-palindromes/

题意

给出 L , R L,R L,R,求在 [ L , R ] [L,R] [L,R]中是某个回文数的平方的回文数的个数
L , R ≤ 1 0 18 L,R\leq 10^{18} L,R1018

题解

考虑枚举根号以后的数,这个枚举是1e9的,但因为这个数也是回文数,所以可以枚举前面一半,后面一半复制即可,这样枚举就是1e5的了

code

py代码,py大法好,但跑得很慢竞赛慎用

class Solution:
    def superpalindromesInRange(self, left: str, right: str) -> int:
        lim = 100000
        left, right = int(left), int(right)
        def check(x: int) -> int:
            return 1 if x >= left and x <= right and str(x)[::-1] == str(x) else 0
        cnt = 0
        for i in range(1, lim):
            s = str(i)
            a = int(s+s[::-1])
            b = int(s[:-1]+s[::-1])
            cnt += check(a*a)+check(b*b)
        return cnt
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值