赞
踩
没什么好说的,遍历所有的 i * i ,通过递归函数求解所有的分割方案,判断是否为惩罚数即可
class Solution: def punishmentNumber(self, n: int) -> int: def find(s, target, now): if now > target: return False if now + int(s) == target: return True for i in range(1, len(s)): if find(s[i:], target, now + int(s[:i])): return True return False ans = 0 for i in range(1, n + 1): if find(str(i * i), i, 0): ans += i * i return ans
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。