RZL


私信TA

用户名:RZL

访问量:817

签 名:

等  级
排  名 44065
经  验 336
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 云南大学
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

n, k = map(int, input().split())

nums = [int(i) for i in input().split()]
nums.sort(reverse=True)
ans = 0
i = 0
limit = n - 1

while i < limit - 2:
    l = i + 1
    r = i + 2
    while l < limit :
        while r < limit :
            if (nums[i] + nums[l] + nums[r]) % k == 0:
                ans = max(ans, nums[i] + nums[l] + nums[r])
                limit = r
                l += 1
                r = l + 1
            else:
                r += 1
        l += 1
        r = l + 1
    i += 1
    # limit = n - 1 删掉这一行就能过,但我也不知道为什么,不删就只能到82

                
print(ans)


 

0.0分

4 人评分

  评论区

要求三个数和的最大,先将列表中的数据按照从大到小的顺序排序,limit = r是这个算法的精髓,限制了进一步搜索可行解的范围。
2022-02-22 21:51:09
  • «
  • 1
  • »