原题链接:蓝桥杯2018年第九届真题-倍数问题
解题思路:
由于余数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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复