解题思路:
由于余数1000 只有1000个 所以我们可以创建余数列表 遍历前两个余数 控制第三个余数 输出最大值
注意事项:

参考代码:

n, k = map(int,input().strip().split())
r = [[0 for _ in range(3)] for i in range(k)]
inputList = [int(temp) for temp in input().strip().split()]
# inputList = [temp for temp in range(100000, 0, -1)]
for i in range(n):
    index = inputList[i] % k
    if inputList[i] > r[index][0]:
        r[index].insert(0, inputList[i])
        r[index].pop()
    elif inputList[i] > r[index][1]:
        r[index].insert(1, inputList[i]) 
        r[index].pop()
    elif inputList[i] > r[index][0]:
        r[index].insert(2, inputList[i])
        r[index].pop()
maxValue = 0
for i in range(k):
    for j in range(i, k):
        temp = (k - i + k - j) % k
        v1 = r[i][0]
        if i == j:
            v2 = r[j][1]
            if i == temp:
                v3 = r[i][2]
            else:
                v3 = r[temp][0]
        else:
            v2 = r[j][0]
            if i == temp:
                v3 = r[i][1]
            elif j == temp:
                v3 = r[j][1]
            else:
                v3 = r[temp][0]
        if v1 + v2 + v3 > maxValue:
            maxValue = v1 + v2 + v3
print(maxValue)


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论