题目是小红的背包问题。在长度为n的数组nlist中求满足所选数量最少的数字组合(至少选一个),使得数字组合是p的整倍数。
求大佬看看我这个代码时间复杂度很高?牛客上说这很慢。。。
n,p = map(int,input().split())
nlist = list(map(int,input().split()))
if p in nlist:
print(1)
exit(0)
nlist.sort()
for i in range(len(nlist)):
if nlist[i] %p == 0:
print(nlist[i])
exit(0)
from itertools import combinations
for j in range(2,len(nlist)):
for cur in combinations(nlist,j):
if sum(cur) %p ==0:
print(len(cur))
exit(0)
全部评论
(0) 回帖