您犯了一个错误-必须确保平方根是整数并且大于或等于
x
,但不完全是
十
(见以下评论):
if x > 1 and y > x:
num_of_programs = [None] * (y + 1)
for i in range(x):
num_of_programs[i] = 0
num_of_programs[x] = 1
for i in range(x + 1, y + 1):
num_of_programs[i] = 0
if i % 2 == 0 and i // 2 >= x:
num_of_programs[i] += num_of_programs[i // 2]
if i % 3 == 0 and i // 3 >= x:
num_of_programs[i] += num_of_programs[i // 3]
if i - 5 >= x:
num_of_programs[i] += num_of_programs[i - 5]
if i - 7 >= x:
num_of_programs[i] += num_of_programs[i - 7]
# fix here!
if i ** (1/2) - int(i ** (1/2)) == 0 and i ** (1/2) >= x:
num_of_programs[i] += num_of_programs[int(i ** (1/2))]
print(num_of_programs[y])