您的位置:首页 > 游戏 > 游戏 > python-糖果俱乐部(赛氪OJ)

python-糖果俱乐部(赛氪OJ)

2024/9/24 14:44:46 来源:https://blog.csdn.net/2401_83954530/article/details/140122603  浏览:    关键词:python-糖果俱乐部(赛氪OJ)

[题目描述]
为了庆祝“华为杯”的举办,校园中开展了许多有趣的热身小活动。小理听到这个消息非常激动,他赶忙去参加了糖果俱乐部的活动。
该活动的规则是这样的:摊位上有 n 堆糖果,第 i 堆糖果有 ai​ 个,参与的同学可以选择其中的任意堆,当所选择糖果的总数为偶数就可以把它们都带走啦~
试问通过这个活动小理最多能在摊位上带走多少枚糖果。
输入格式:
输入共两行。
第1行 输入一个整数 n ,代表共有 n 堆糖果。
第2行 依次输入 n 个整数 ai​ ,代表每堆糖果的数量。
输出格式:
输出一个整数,代表小理最多能取得的糖果。
样例输入#1
4
1 2 3 4
样例输出#1
10
样例输入#2
8
10 11 10 10 10 10 10 10
样例输出#2
70
数据范围
对于 100% 的数据,保证 n≤100 且 ai​≤100000 。
来源/分类(难度系数:一星)


完整代码展示:
a=int(input())
b=list(map(int,input().split()))
c=[]
d=[]
for i in range(0,len(b)):
    if b[i]%2==0:
        c.append(b[i])
    else:
        d.append(b[i])
d.sort()
if len(d)%2==0:
    sum=sum(c)+sum(d)
else:
    sum=sum(c)+sum(d)-d[0]
print(sum)


代码解释:
a=int(input())
 b=list(map(int,input().split()))
 c=[]
 d=[]         
                                    ”,让用户输入糖果的堆数a。建立一个列表b,储存各堆糖果的具体糖果数。建立空列表c和d(各用来储存糖果数为偶数和奇数的糖果堆)。
for i in range(0,len(b)):
        if b[i]%2==0:
              c.append(b[i])
        else:
              d.append(b[i])
  ”,遍历列表b中元素(各糖果堆的糖果数),如果为偶数,则将其添加进列表c中;否则将其添加进列表d中。直至遍历完b中所有元素,循环结束。
d.sort()
 if len(d)%2==0:
     sum=sum(c)+sum(d)
 else:
     sum=sum(c)+sum(d)-d[0]
”,对列表d中元素进行升序排序,如果列表d的长度为偶数,则能带走的最多糖果数为列表c与列表d中所有元素的总和;否则能带走的最多糖果数为列表c与列表d中除第一项的所有元素的总和。(这里蕴含一个数学基本原理:奇数+奇数=偶数,偶数+偶数=偶数,奇数+偶数=奇数,因此欲求为偶数的最大总和,可先求出所有偶数的总和(列表c中所有元素的总和),再加上尽可能多的偶数个奇数的和(列表d中元素个数为偶数,全加;为奇数,不加最小的一项d[-1]))
print(sum)       ”,打印最终结果(为偶数的最大总和)。


运行效果展示:

9a8bba9756014ff091d5841df031e540.jpg

ebe5a85140534000a986a46077a4ed7f.jpg 

        (声明:以上内容均为原创) 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com