python ccf题解 201703-1 分蛋糕

本文介绍了一个有趣的算法问题——分蛋糕。小明有n块不同重量的蛋糕,目标是尽可能多地让朋友分到至少k重量的蛋糕。文章详细阐述了如何通过编程解决这一问题,包括输入输出格式和样例说明。
部署运行你感兴趣的模型镜像

201703-1 分蛋糕

问题描述

试题编号:201703-1
试题名称:分蛋糕
时间限制:1.0s
内存限制:256.0MB
问题描述:

问题描述

  小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k
  请问当小明的蛋糕分完时,总共有多少个朋友分到了蛋糕。

输入格式

  输入的第一行包含了两个整数nk,意义如上所述。
  第二行包含n个正整数,依次表示a1, a2, …, an

输出格式

  输出一个整数,表示有多少个朋友分到了蛋糕。

样例输入

6 9
2 6 5 6 3 5

样例输出

3

样例说明

  第一个朋友分到了前3块蛋糕,第二个朋友分到了第4、5块蛋糕,第三个朋友分到了最后一块蛋糕。

评测用例规模与约定

  对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 10000,1 ≤ ai ≤ 1000。

代码

#分蛋糕
n,k = list(map(int,input().split()))
a = list(map(int,input().split()))
f = 0 #分到蛋糕的朋友数
nowk = 0 #当前朋友分到的蛋糕重量
for i in a:#分蛋糕
    nowk += i
    if(nowk>=k):#当前重量达到为下一个朋友分
        nowk = 0
        f += 1
        
if(nowk!=0):#最后剩余不足蛋糕再分一人
    f += 1
print(f)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### CCF CSP 历年 Python 考试题及其解答 #### 关于CCF CSP考试 中国计算机学会(CCF)主办的软件能力认证(CSP)是一项评估个人编程能力和算法设计水平的重要测试。该考试通常为四个题目,难度逐级增加。对于希望提高自己编程技能的学习者来说,研究历年真题是一个非常有效的学习方法。 以下是基于提供的参考资料整理的一些关于CCF CSP历年Python考试真题的内容以及部解析: --- #### 参考资料中的内容概述 在给定的引用材料中提到,有一份全面收录了CCF-CSP历年真题并附带详细题解的文档已经更新至2023年12月版本[^1]。这份资源不仅包含了完整的题目描述,还提供了详细的解决方案和思路析。特别指出的是,如果考生的目标并非追求满,则可以通过重点练习前几道相对简单的题目来有效提升自己的成绩表现。 另外,在另一篇博客文章里给出了具体的一道典型例题——即来自2017年3月份的第一题《蛋糕》问题[^2]。此题要求根据输入数据计算满足条件的最大组数,并通过一段简洁明了的Python代码实现了这一逻辑功能。 --- #### 题目实例:201703-1 蛋糕 (Python实现) 下面展示如何用Python解决上述提及到的经典案例之一:“蛋糕”。 ```python n, k = map(int, input().split()) cake = list(map(int, input().split())) cnt = 0 s = 0 sc = [] for i in range(n): s += cake[i] if s >= k: sc.append(i) cnt += 1 s = 0 if len(sc) != 0 and sc[-1] + 1 == n: pass else: cnt += 1 print(cnt) ``` 这段程序首先读取两个整数值`n`代表蛋糕数量与目标重量阈值`k`, 接下来获取每蛋糕的具体大小形成列表形式存储起来;随后初始化计数器变量`cnt`用于记录符合条件的结果数目。接着遍历整个数组累加当前区间内的总重直至超过设定界限为止便计入一次成功割操作并将相应位置索引保存进辅助队列当中以便后续判断边界情况处理最后剩余片段是否也需要额外考虑进去从而得出最终答案输出结果。 --- #### 总结建议 针对准备参加此类竞赛或者单纯想锻炼自身编码技巧的人群而言,定期复习过往经典赛题无疑是非常有益处的一项活动。不仅可以熟悉各类常见考点还能逐步积累实战经验进而不断提高解决问题的能力效率等方面都有所帮助。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值