当前位置: 首页 > news >正文

Python解题 - CSDN周赛第28期

上一期周赛问哥因为在路上,无法参加,但还是抽空登上来看了一下题目。4道题都挺简单的,有点遗憾未能参加。不过即使参加了,手速也未必能挤进前十。

本期也是一样,感觉新增的题目都偏数学类,基本用不到所谓的算法,纯数学模拟就可以。此外还有两道之前考过的题目,直接抄了我以前的代码,纯属送分了。


第一题:小Q的鲜榨柠檬汁

团建活动是大家所想要的。小Q给大家准备了鲜橙汁。现在有n个朋友买回了k瓶饮料,每瓶有l毫升的饮料,同时还买回了c个柠檬,每个柠檬可以切成d片,p克盐。已知每个朋友需要nl毫升的饮料,一片柠檬,以及np克盐。小Q想知道每个朋友最少可以喝多少杯饮料。

输入描述:输入整数n,k,l,c,d,p,nl,np。所有数据小于1000的正整数。

输出描述:所有朋友中最少喝多少杯。

示例:

示例
输入3 4 5 10 8 100 3 1
输出2

分析

题目很啰嗦,参数异常的多,但其实很简单:

  • k 瓶饮料,每瓶 l 毫升,可以做 k*l/nl 杯饮料,向下取整;
  • c 个柠檬,每个柠檬可以切 d 片,可以做 c*d 杯饮料;
  • p 克盐,可以做 p/np 杯饮料,向下取整。

三者取最小值,得到总共最多可以做多少杯饮料,再除以人数 n ,向下取整,就得到每个人可以喝到的饮料数了。

参考代码

n, k, l, c, d, p, nl, np = map(int, input().strip().split())
print(min(k*l//nl, c*d, p//np)//n)

第二题:三而竭

一鼓作气再而衰三而竭。小艺总是喜欢把任务分开做。小艺接到一个任务,任务的总任务量是n。第一天小艺能完成x份任务。第二天能完成x/k。。。。第t天能完成x/(k^(t-1))。小艺想知道自己第一天至少完成多少才能完成最后的任务。

输入描述:第一行输入整数n,k。(1<=n<=1e9,2<=k<=10)

输出描述:输出x的最小值。
示例:

示例
输入59 9
输出

54

分析

以前考过的老题。题目隐藏的限制是每一天可以做完的任务不会是小数,不然连示例也得不到。然后可以使用二分去不断地“试”这个满足要求的左边界,也就是可以完成任务的最小数字。

参考代码

def fun(x, n, k):while n > 0 and x > 0:n -= xx //= kreturn True if n <= 0 else Falsen, k = map(int, input().strip().split())
left, right = n//2, n
while left < right:mid = left + right >> 1if fun(mid, n, k): right = midelse: left = mid + 1
print(left)

第三题:隧道逃生

小海豚喜欢打游戏,现在它在操纵游戏人物小C逃脱废弃的隧道,逃生装置在小C的前方 X 米远的位置。但是游戏机只有两个按钮:前进和后退,按前进,小C会前进 m 米,按后退,小C会后退 n 米。小海豚必须设法把小C送到逃生装置上,方能逃离隧道,请你帮帮小海豚,告诉它至少要操作多少次,才能通关。

输入描述:输入三个正整数X、m和n

输出描述:输出一个整数,表示小海豚通关需要操作的次数

示例:

示例
输入5 77 157
输出

73

分析

纯粹模拟。因为题目要求必须要恰好送到 X 的位置,假设小C所在的位置为0,需要前进 a 次,后退 b 次,易得公式:

X = a*m - b*n

但这里的 a 和 b 可以有无数组解,而我们要取 a+b 的值为最小的。于是只需设定:如果小C的位置超过了 X,就选择后退,而一旦他的位置小于 X,就选择前进。除非 m = n ,否则一定可以到达 X 且这样操作的总步数是最少的。由于本题并没有说明如果到达不了该如何输出,所以并不需要特判 m 是否等于 n

参考代码

X, m, n = map(int, input().strip().split())
a = 0
while True:b = 0d = m * awhile True:t = d - X - n * bif t > 0:b += 1else:breakif t == 0: breaka += 1
print(a + b)

第四题:收件邮箱

已知字符串str,str表示邮箱的不标准格式。其中”.”会被记录成”dot”,”@”记录成”at”。写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

输入描述:输入字符串str.(1<=strlen(str)<=1000)

输出描述:输出转化后的格式。

示例:

示例一
输入mxyatoxcoderdotcom
输出mxy@oxcoder.com

分析

不用分析了,第6期考过的老题,可以参考我之前写的题解。

http://www.lryc.cn/news/7720.html

相关文章:

  • DNS记录类型有哪些,分别代表什么含义?
  • ICLR 2022—你不应该错过的 10 篇论文(上)
  • HydroD 实用教程(三)环境数据
  • 第四章 统计机器学习
  • Redis第一讲
  • Java面试题-消息队列
  • 基于离散时间频率增益传感器的P级至M级PMU模型的实现(Matlab代码实现)
  • 9个相见恨晚的提升办公效率的网站!
  • java的双亲委派模型-附源码分析
  • Docker 笔记
  • 用户认证-cookie和session
  • UUID的弊端以及雪花算法
  • 使用netty+springboot打造的tcp长连接通讯方案
  • 【正点原子FPGA连载】第十章PS SYSMON测量温度电压实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • AcWing《蓝桥杯集训·每日一题》—— 1460 我在哪?
  • AcWing《蓝桥杯集训·每日一题》—— 3729 改变数组元素
  • 如何熟练掌握Python在气象水文中的数据处理及绘图【免费教程】
  • Leetcode详解JAVA版
  • LeetCode 83. 删除排序链表中的重复元素
  • RMI简易实现(基于maven)
  • ‘excludeSwitches‘ 的 [‘enable-logging‘] 和[‘enable-automation‘]
  • 华为OD机试 - 最短木板长度(Python)| 真题+思路+考点+代码+岗位
  • 第一个Python程序-HelloWorld与Python解释器
  • C++数据类型
  • 华为OD机试 - 考古学家(Python)| 真题+思路+考点+代码+岗位
  • 常用调试golang的bug以及性能问题的实践方法
  • 什么是溶血症?什么是ABO溶血?溶血检查些什么?
  • NLP实践——知识图谱问答模型FiD
  • MyBatis 多表关联查询
  • 《NFL橄榄球》:克利夫兰布朗·橄榄1号位