dp打表

魔法棒

https://www.nowcoder.com/practice/976bd95dda8f4430b512d0c39bd9f106

思路:用dp打表找规律,可以发现在x > 14时,结果都为True;在x <= 14时,结果不都为True。那么我们就在x <= 14的时候用dp表判断一下,否则直接输出Yes即可

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def dp_table(max_n):
    dp = [False] * (max_n + 1)
    dp[1] = True
    for i in range(2, max_n + 1):
        k = 1
        while k * k <= i:
            j = i - k * k + 1
            if 1 <= j <= i and dp[j]:
                dp[i] = True
                break
            k += 1
    return dp

dp = dp_table(100)

# for i in range(1, 101):
#     print(f"x={i}: {dp[i]}")

def solve():
    x = II()
    if x <= 14:
        print("Yes" if dp[x] else "No")
    else:
        print("Yes")

# t = 1
t = II()
for _ in range(t):
    solve()
#每日一题挑战#
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
2025-11-06 23:30
已编辑
华中师范大学 后端工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务