解题思路:
优化枚举
(a+b+c)%k =(a%k+b%k+c%k)%k=0
参考代码:
#include<stdio.h>
int list[1005][3];
int main()
{
//(a+b+c)%k = (a%k+b%k+c%k)%k
int n,k;
int num;
scanf("%d %d",&n,&k);
while(n--)
{
scanf("%d",&num);
if(num >= list[num%k][0])
{
list[num%k][2] = list[num%k][1];
list[num%k][1] = list[num%k][0];
list[num%k][0] = num;
}
else if(num < list[num%k][0] && num > list[num%k][1])
{
list[num%k][2] = list[num%k][1];
list[num%k][1] = num;
}
else if(num < list[num%k][1] && num > list[num%k][2])
{
list[num%k][2] = num;
}
}
int max = 0x80000000;
int v1,v2,v3;
int i,j;
for(i=0;i<=k;i++)
{
for(j=i;j<=k;j++)
{
int t = (k-i+k-j)%k;
v1 = list[i][0];
if(i == j)
{
v2 = list[i][1];
if(t == i)
v3 = list[i][2];
else
v3 = list[t][0];
}
else
{
v2 = list[j][0];
if(t == i)
v3 = list[i][1];
else if(t == j)
v3 = list[j][1];
else
v3 = list[t][0];
}
if(v1+v2+v3 > max)
max = v1+v2+v3;
}
}
printf("%d",max);
}
0.0分
0 人评分
蓝桥杯历届试题-九宫重排 (C++代码)浏览:2783 |
十->二进制转换 (C语言代码)浏览:1291 |
求圆的面积 (C语言代码)浏览:1269 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1242 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:522 |
矩形面积交 (C++代码)浏览:1127 |
1050题解(结构体数组与结构体指针的使用)浏览:1107 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:650 |
1250题解浏览:555 |