CSDN编程题-每日一练(2023-08-14)
一、题目名称:小股炒股
题目描述:
输入描述:
输出描述:
🚩 示例:
🔔 解题思路:
代码如下:
# 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()
二、题目名称:王子闯闸门
题目描述:
输入描述:
输出描述:
🚩示例:
🔔 解题思路:
代码如下:
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)
三、题目名称:圆小艺
题目描述:
输入描述:
输出描述:
🚩示例:
🔔 解题思路:
代码如下:
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