解题思路:从最大的数开始枚举,如果遇到小的满足条件的数直接跳出循环
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; int n,m,sum,a[100001]; bool cmp(int x,int y){ return x>y; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ for(int k=j+1;k<=n;k++){ if((a[i]+a[j]+a[k])%m==0){ if(a[i]+a[j]+a[k]<=sum) break; else sum=a[i]+a[j]+a[k]; } }if(a[i]+a[j]+a[3]<=sum) break; }if(a[i]+a[2]+a[3]<=sum) break; } cout<<sum; return 0; }
0.0分
2 人评分