CSDN编程题-每日一练(2023-08-14)

CSDN编程题-每日一练(2023-08-14)

  • 一、题目名称:小股炒股
  • 二、题目名称:王子闯闸门
  • 三、题目名称:圆小艺

一、题目名称:小股炒股

时间限制:1000ms内存限制:256M

题目描述:

已知n天后的股票行情,现在已有的本金是m, 规定只能入手一次股票和抛售一次股票。 最大收益是?

输入描述:

第一行输入整数n,m。(1<=n<=1000,1<=m<=10000) 第二行输入n个整数表示某股票单股价格p。(1<=p<=1000)

输出描述:

输出小最大收益

🚩 示例:

✔️ 示例1:

输入
2 4
3 7

输出
8

🔔 解题思路:

这道题目是要计算在n天后的股票行情中,通过一次买入和一次卖出能够获得的最大收益。题目中给出了n天后的股票价格列表和初始本金m。我们需要通过计算来找到最佳的买入和卖出时机,使得收益最大化。

代码如下:

# max(a, b)函数用于比较两个数 a 和 b,返回较大的那个数,使用了三元条件表达式。
def max(a, b):return a if a > b else b#count(m, a, b)函数用于计算一次交易后的利润,给定参数 m(本金)、a(买入价格)、和 b(卖出价格)。它计算可以用初始资金 m 购买的最大单位数 n,然后计算购买了 n 个单位后的剩余资金。函数返回出售购买的单位后得到的总资金。
def count(m, a, b):n = m // a  #计算用来表示投资收益的比例或指标,它表示的是投入的本金与购买价格之间的比值。这个比值可以用来评估投资的效果,以及在卖出资产后,本金相对于初始购买价格的增长或减少情况。return m - n * a + b * n  #计算交易总资金
#
def solution(n, m, plist): p = plist[0] #初始化变量p为列表plist的第一个元素,并将变量s赋值为m。s = mfor i in range(1, n): #通过循环遍历列表plist的剩余元素。如果当前元素大于p,说明可以卖出并获得更高的利润,调用count函数计算利润,并将结果与s进行比较,取较大值。如果当前元素小于等于p,说明无法获得更高的利润,更新p为当前元素。if plist[i] > p:t = count(m, p, plist[i])s = max(t, s)else:p = plist[i]print(s)  #打印输出sdef main():tem_arr = list(map(int, input().split()))  #使用input()函数接收输入的数据,并以空格为分隔符将输入的两个数字保存到tem_arr列表中。n = tem_arr[0] #将tem_arr中的第一个数字赋值给变量nm = tem_arr[1] #将第二个数字赋值给变量mplist = list(map(int, input().split())) #使用input()函数接收输入的数据,并以空格为分隔符将输入的数字保存到plist列表中solution(n, m, plist) # 调用solution函数,传入n、m和plist作为参数if __name__ == "__main__":main()

在这里插入图片描述
在这里插入图片描述

二、题目名称:王子闯闸门

时间限制:1000ms内存限制:256M

题目描述:

波斯王子要去救被贾法尔囚禁的公主,但贾法尔用黑魔法在他面前设置了编号从1到n的n道闸门。从王子的位置到1号闸门需要1秒,从n号闸门到公主所在的位置也需要1秒,从p号闸门到p+1或p-1号闸门都需要1秒。

每过1秒钟,王子都必须决定选择前进一道闸门、后退一道闸门或停在原地这三种动作中的一种。当然,王子不能选择移动到关闭状态的闸门而只能选择开启状态的闸门。在王子做出动作选择后,闸门也可能会有关闭和开启的动作,如果王子做完动作后,其所在的闸门在该秒内的动作是从开启变为关闭则他就会被闸门夹死。

现在给出闸门数量n和m个闸门的动作时刻表,求波斯王子需要多少秒才能救出公主。

输入描述:

第一行给出n和m,接下来的m行每行代表一个闸门关闭的时段,包含三个数字a、b、c代表编号为a的闸门会在第b秒到第c秒之间关闭,其他时间开启。可能会给出同一编号闸门的多个关闭时段,但这些时段不会相交,即如果给出的数字是a、p、q和a、x、y则不可能p<x<q或x<p<y。

输出描述:

波斯王子救出公主所需要的秒数t(t>0)。

🚩示例:

✔️示例1

输入样例:

2 2
1 2 3
2 1 2

输出样例:

6

输入示例解释:
有2道闸门(编号从1到2)。
第1道闸门会在第2秒到第3秒之间关闭,其他时间开启。
第2道闸门会在第1秒到第2秒之间关闭,其他时间开启。

输出示例解释:
波斯王子需要按照以下步骤来救出公主:

移动到1号闸门:1秒
移动到2号闸门:1秒
移动到1号闸门:1秒
移动到2号闸门:1秒
移动到1号闸门:1秒
移动到2号闸门:1秒
所以,总共需要6秒才能救出公主。

🔔 解题思路:

代码如下:

n, m = map(int, input().split())
gates = [0] * (n + 2)
for _ in range(m):a, b, c = map(int, input().split())gates[a] = max(gates[a], c)
res = 0
for i in range(1, n + 1):res += 2if gates[i] > gates[i - 1]:res += 1# 如果王子在公主所在位置,额外增加一秒,但只有在公主所在闸门是关闭的时候才需要增加
if gates[n] > gates[n - 1] or gates[n] == 0:res += 1print(res)

在这里插入图片描述
在这里插入图片描述

三、题目名称:圆小艺

时间限制:1000ms内存限制:256M

题目描述:

最近小艺酱渐渐变成了一个圆滑的形状-球!! 小艺酱开始变得喜欢上球! 小艺酱得到n个同心圆。 小艺酱对着n个同心圆进行染色。 相邻的圆范围内不能有相同的颜色。相隔一层的圆颜色相同。 小艺酱想知道两种颜色最大中最外层圆的那种颜色染了多少?

输入描述:

第一行输入整数n.(1<=n<=1000)表示圆的数量。 第二行输入n个圆的半径。(1<=r<=1000)

输出描述:

输出染色面积,保留小数点后3位。

🚩示例:

✔️示例1
输入
3
1 2 3

输出
18.849

🔔 解题思路:

1、根据输入的n和n个圆的半径,计算出每个圆的面积。
2、按照题目描述的染色规则,计算出两种颜色最外层圆的面积。
3、输出结果,保留小数点后3位。

代码如下:

class Solution:def solution(self, n, arr): #方法solution接收两个参数,分别是整数n和一个列表arrresult = NonePI = 3.141592653589793 #定义了一个常量PI,表示π的值arr.sort(reverse=True) #将输入的数组arr按照降序排列,然后初始化结果变量result为0。result = 0for i in range(0, n, 2): #使用循环遍历数组arr中的元素,步长为2。在每次循环中,计算当前元素和下一个元素所对应的圆的面积差,并将其累加到结果result中。result += (PI * arr[i] * arr[i] - PI * arr[i + 1] * arr[i + 1]) #在每次循环中,计算当前元素和下一个元素所对应的圆的面积差,并将其累加到结果result中。具体计算方法为:使用PI乘以当前元素的平方减去PI乘以下一个元素的平方。return result  #返回结果resultif __name__ == "__main__":n = int(input().strip()) #首先读取输入的整数narr = [int(item) for item in input().strip().split()] #读取输入的列表arr,将其转换为整数类型,并将0追加到列表末尾arr.append(0)  # arr变成n+1项sol = Solution() #创建Solution类的实例solresult = sol.solution(n, arr) #传入n和arr作为参数,并将返回的结果赋值给变量result。print('%.3f' % result)  # 保留3位,不去除末位0

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67051.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记整理-BOM-01-基础知识

一、 BOM常用对象 BOM&#xff08;Browser Object Model&#xff0c;浏览器对象模型&#xff09;是JS与浏览器窗口交互的接口。一些与浏览器改变尺寸、滚动条滚动相关的特效&#xff0c;都要借助BOM技术。 1. Window对象 window对象是当前JS脚本运行所处的窗口&#xff0c;而这…

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式 0、引言1 基于LightGBM的网络入侵检测研究2 基于互信息法的智能化运维系统入侵检测Spark实现3 基于Spark的车联网分布式组合深度学习入侵检测方法4 基于Flink的分布式在线集成学习框架研究5 基于Flink的分布式并行逻辑回…

Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制

一、导入SpringBoot依赖 在pom.xml文件中&#xff0c;引入Spring Boot和Redis相关依赖 <!-- Google Guava 使用google的guava布隆过滤器实现--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><vers…

企业计算机服务器中了Devos勒索病毒怎么办,勒索病毒解密

社会在发展&#xff0c;科技在进步&#xff0c;企业的生产也得到了很大改善&#xff0c;但是随着网络技术的不断发展&#xff0c;越来越多的企业遭到的网络安全威胁开始增多&#xff0c;其中较为明显的就是勒索病毒攻击。预防勒索病毒攻击成为日常生活中不可或缺的一部分工作。…

互联网发展历程:从网线不够长到中继器的引入

互联网&#xff0c;这个如今贯穿我们生活的无所不在的网络&#xff0c;其发展历程充满了无数的创新和变革。有一项看似不太起眼的技术却在互联网的发展中发挥着至关重要的作用&#xff0c;那就是中继器。本文将带您深入了解互联网的发展历程&#xff0c;探讨在网线不够长的情况…

【深入理解ES6】字符串和正则表达式

概念 字符串&#xff08;String&#xff09;是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol&#xff08;es6新增&#xff09;。 更好的Unicode支持 1. UTF-16码位 字符串里的字符有两种&#xff1a; 前 个码位均以16位的编码单元…

工程监测振弦采集仪采集到的数据如何进行分析和处理

工程监测振弦采集仪采集到的数据如何进行分析和处理 振弦采集仪是一个用于测量和记录物体振动的设备。它通过测量物体表面的振动来提取振动信号数据&#xff0c;然后将其转换为数字信号&#xff0c;以便进行分析和处理。在实际应用中&#xff0c;振弦采集仪是广泛应用于机械、建…

pytest数据驱动(最简单)

目录 第一种&#xff1a;通过yaml文件获取数据&#xff08;一维列表&#xff09; 第二种&#xff1a;通过yaml文件获取数据&#xff08;二维列表&#xff09; 第三种&#xff1a;通过yaml文件获取数据&#xff08;pytest.fixture&#xff09; 资料获取方法 第一种&#xff…

SQL进阶--SQL的常用技巧

一、ORDER BY FIELD() 自定义排序逻辑 排序 ORDER BY 除了可以用 ASC 和 DESC&#xff0c;还可以通过**ORDER BY FIELD(str,str1,...)**自定义字符串/数字来实现排序。这里用 order_diy 表举例&#xff0c;结构以及表数据展示&#xff1a; 二、CASE 表达式 「case when then el…

第4章:决策树

停止 当前分支样本均为同一类时&#xff0c;变成该类的叶子节点。当前分支类型不同&#xff0c;但是已经没有可以用来分裂的属性时&#xff0c;变成类别样本更多的那个类别的叶子节点。当前分支为空时&#xff0c;变成父节点类别最多的类的叶子节点。 ID3 C4.5 Cart 过拟合 缺…

Ubantu安装Docker(完整详细)

先在官网上查看对应的版本:官网 然后根据官方文档一步一步跟着操作即可 必要准备 要成功安装Docker Desktop&#xff0c;必须&#xff1a; 满足系统要求 拥有64位版本的Ubuntu Jammy Jellyfish 22.04&#xff08;LTS&#xff09;或Ubuntu Impish Indri 21.10。 Docker Deskto…

Datawhale Django入门组队学习Task01

Task01 一.创建虚拟环境 python -m venv django_learn &#xff08;django_learn那里是自己定的环境名字&#xff09; 之前一直用conda管理虚拟环境&#xff0c;没咋用过virtualenv&#xff0c;然后我的powershell之前也设置了默认启动了base环境&#xff0c;然后输入activat…