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 = m
    for 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)  #打印输出s

def main():
    tem_arr = list(map(int, input().split()))  #使用input()函数接收输入的数据,并以空格为分隔符将输入的两个数字保存到tem_arr列表中。
    n = tem_arr[0] #将tem_arr中的第一个数字赋值给变量n
    m = tem_arr[1] #将第二个数字赋值给变量m
    plist = 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 += 2
    if gates[i] > gates[i - 1]:
        res += 1

# 如果王子在公主所在位置,额外增加一秒,但只有在公主所在闸门是关闭的时候才需要增加
if gates[n] > gates[n - 1] or gates[n] == 0:
    res += 1

print(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和一个列表arr
        result = None
        PI = 3.141592653589793 #定义了一个常量PI,表示π的值
        arr.sort(reverse=True) #将输入的数组arr按照降序排列,然后初始化结果变量result为0。
        result = 0
        for 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  #返回结果result
        
if __name__ == "__main__":
    n = int(input().strip()) #首先读取输入的整数n
    arr = [int(item) for item in input().strip().split()] #读取输入的列表arr,将其转换为整数类型,并将0追加到列表末尾
    arr.append(0)  # arr变成n+1项
    sol = Solution() #创建Solution类的实例sol
    result = sol.solution(n, arr) #传入n和arr作为参数,并将返回的结果赋值给变量result。
    print('%.3f' % result)  # 保留3位,不去除末位0

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开学季电容笔怎么选?iPad第三方电容笔了解下

不少的学生党开学必备清单里都少不了电容笔&#xff0c;可见其的重要性。自从苹果发布了ipad的原装电容笔以来&#xff0c;这款电容笔在目前市面上就一直很受欢迎&#xff0c;不过由于Apple Pencil的售价实在是太贵了&#xff0c;使得大部分人都买不起。于是&#xff0c;市面上…

Android中tools属性的使用

参考&#xff1a; 1.Android:Tools命名空间原来是有大用处的 2.Android中tools属性的使用 3.工具属性参考文档 4. 命名空间介绍 5. 注解 6. lint 7. 资源压缩shrink-resources 目录 一、概述二、引入tools命名空间三、tools 命名空间的作用有哪些&#xff1f;四、tools 命名空间…

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素&#xff0c;我们往往想到就是先给数组…

【Linux初阶】system V消息队列 + system V信号量

文章目录 一、system V消息队列&#xff08;了解&#xff09;二、system V信号量&#xff08;了解&#xff09;1.信号量是什么2.临界资源和临界区3.互斥4.为什么要信号量 三、IPC资源的组织方式结语 一、system V消息队列&#xff08;了解&#xff09; 消息队列提供了一个从一…

聊聊JDK1.0到JDK20的那些事儿 | 京东云技术团队

1.前言 最近小组在开展读书角活动&#xff0c;我们小组选的是《深入理解JVM虚拟机》&#xff0c;相信这本书对于各位程序猿们都不陌生&#xff0c;我也是之前在学校准备面试期间大致读过一遍&#xff0c;emm时隔多日&#xff0c;对里面的知识也就模糊了。这次开始的时候从前面…

在Java中对XML的简单应用

XML 数据传输格式1 XML 概述1.1 什么是 XML1.2 XML 与 HTML 的主要差异1.3 XML 不是对 HTML 的替代 2 XML 语法2.1 基本语法2.2 快速入门2.3 组成部分2.3.1 文档声明格式属性 2.3.2 指令&#xff08;了解&#xff09;&#xff1a;结合CSS2.3.3 元素2.3.4 属性**XML 元素 vs. 属…

nginx keepalived 本地二进制部署

文章目录 安装 nginx安装 keepalived卸载 nginx卸载 keepalived 安装 nginx wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -xf nginx-1.24.0.tar.gz cd nginx-1.24.0/ ./configure --with-stream --prefix/usr/local/nginx make && make install修改nginx…

使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇&#xff0c;是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序&#xff0c;输出“Hello&#xff01;”的内容介绍。 首先我们来了解下ROS的文件系统&#xff0c;ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;其结构…

华为OD机试 - 查找众数及中位数(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

代码运行要求&#xff1a;tensorflow版本>2.4.0,Python>3.6.0即可&#xff0c;无需修改数据路径。 1.数据集介绍&#xff1a; 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。尽管它们是电网中最可靠的部件&#xff0c;但由于内部或外部的许多因素&#…

《Linux从练气到飞升》No.13 Linux进程状态

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

2023年国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

aspose 使用ftl模板生成word和pdf

1 先找到word模板&#xff0c;用${}&#xff0c;替换变量&#xff0c;保存&#xff0c;然后另存为xml,最后把xml后缀改成ftl。 如下图&#xff1a; word 模板文件 ftl模板文件如下: 2 代码生成 下面函数将ftl填充数据&#xff0c;并生成word和pdf /*** * param dataMap 模板…

找到链表的第一个入环节点

1.题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

Docker 基本管理(一)

目录 一、虚拟化简介 1.1.虚拟化概述 1.2.cpu的时间分片&#xff08;cpu虚拟化&#xff09; 1.3.cpu虚拟化性性能瓶颈 1.4.虚拟化工作原理 1.5 虚拟化类型 1.6 虚拟化功能 ​二、Docker容器概述 2.1 docker是什么&#xff1f; 2.2 使用docker有什么意义&#xff…

正则表达式试炼

序 我希望在这里列出我很多想写的正则表达式&#xff0c;很多我想写&#xff0c;但是不知道怎么写的。分享点滴案例。未来这个文章会越来越长 前言 互联网时代&#xff0c;除了文本还有更好的学习方式&#xff0c;下面是几个不错的练习网站&#xff0c;如果你想系统地学习&a…

【C语言实战项目】通讯录

一.了解项目功能 在本次实战项目中我们的目标是实现一个通讯录: 该通讯录可以用来存储1000个人的信息 每个人的信息包括&#xff1a;姓名、年龄、性别、住址、电话 通讯录提供功能有&#xff1a; 添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有…

python中两个数据框之间的遍历

1.输入文件1 文件1&#xff1a;第一列是基因名字&#xff0c;列2&#xff1a;外显子起始位置&#xff0c;列3&#xff1a;外显子终止位置&#xff0c;列4&#xff1a;外显子的序号 2.输入文件2&#xff1a; 备注&#xff1a;列1&#xff1a;基因id&#xff1b;列2&#xff1a;…

Verdi_如何dump信号的驱动强度

Verdi_如何dump信号的驱动强度 需求背景 在Verilog语法标准中&#xff0c;0和1各自被分成了8个强度等级&#xff1b; Strength NameStrength NameStrength Levelsupply 0supply 17strong 0strong 16pull 0pull 15large 0large 14weak 0weak 13medium 0medium 12small 0small…

软件测试用例设计方法之因果图法

基本概念 因果图是一种利用图解法分析输入的各种组合情况&#xff0c;从而设计测试用例的方法&#xff0c;它适合于检查程序输入条件的各种组合情况。 设计测试用例的步骤 分析软件规格说明描述中, 哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件), 并给每…