解题思路可参考 判断整除。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 const int N=105; 6 int f[N][N]; 7 8 int main(){ 9 int n,k,t; 10 cin>>n>>k; 11 for(int i=1;i<=n;i++){ 12 scanf("%d",&t); 13 f[i][t%k]=t;//仅选择第i个糖果 14 for(int j=0;j<k;j++) 15 if(f[i-1][j]) 16 f[i][(j+t)%k]=t+f[i-1][j]; 17 for(int j=0;j<k;j++) 18 f[i][j]=max(f[i][j],f[i-1][j]); 19 } 20 cout<<f[n][0]; 21 return 0; 22 }