解题思路:
优化枚举
(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 人评分
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:542 |
简单的a+b (C语言代码)浏览:717 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:605 |
简单的a+b (C语言代码)浏览:644 |
【绝对值排序】 (C++代码)浏览:670 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:548 |
简单的a+b (C语言代码)浏览:573 |
1014题解浏览:484 |
简单的a+b (C语言代码)浏览:572 |
C二级辅导-公约公倍 (C语言代码)浏览:482 |