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()
#每日一题挑战#
腾讯成长空间 5981人发布