一、题目名称:小股炒股

题目描述:

输入描述:

输出描述:

🚩 示例:

🔔 解题思路:

代码如下:

# 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()

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

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

题目描述:

输入描述:

输出描述:

🚩示例:

🔔 解题思路:

代码如下:

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)

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

三、题目名称:圆小艺

题目描述:

输入描述:

输出描述:

🚩示例:

🔔 解题思路:

代码如下:

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

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

08-15 06:21