题解 | #小红取数#
小红取数
http://www.nowcoder.com/practice/6a7b2b6c9e3a4f56b1db9f8ca08d889b
n,k=map(int,input().split())
arr=list(map(int,input().split()))
map1=[[] for _ in range(k)]
dp=[[0]*k for _ in range(n+1)]
maxi=0
for i in range(1,n+1):
for j in range(k):
dp[i][j]=max(dp[i-1][j],dp[i][j])
dp[i][(dp[i-1][j]+arr[i-1])%k]=max(dp[i-1][j]+arr[i-1],dp[i][(dp[i-1][j]+arr[i-1])%k])
if dp[-1][0]:
print(dp[-1][0])
else:
print(-1)
按照大佬:xqxls 的思想写了一个python版本