2025/3/27

题目

七个不同的符号代表罗马数字,其值如下:

符号
I1
V5
X10
L50
C100
D500
M1000

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:

  • 如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。
  • 如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。
  • 只有 10 的次方(IXCM)最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果需要将符号附加4次,请使用 减法形式

给定一个整数,将其转换为罗马数字。

示例 1:

输入:num = 3749

输出: "MMMDCCXLIX"

解释:

3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)
 700 = DCC 由于 500 (D) + 100 (C) + 100 (C)
  40 = XL 由于 50 (L) 减 10 (X)
   9 = IX 由于 10 (X) 减 1 (I)
注意:49 不是 50 (L) 减 1 (I) 因为转换是基于小数位

示例 2:

输入:num = 58

输出:"LVIII"

解释:

50 = L
 8 = VIII

示例 3:

输入:num = 1994

输出:"MCMXCIV"

解释:

1000 = M
 900 = CM
  90 = XC
   4 = IV
  • 1 <= num <= 3999

思路

按数位分割,对每一位建立对应的哈希表,能从哈希表中获取则结束;不能获取则若大于5获取5,随后获取剩下1,小于5则直接或许剩下1

官方题解

1.硬解码

2.共有13中基础字符(1,5开头和4,9开头),从大到小建立字典,遍历字典,num>字典键则num-字典并在roman结果中+=键值,直到num<0

import matplotlib.pyplot as plt import matplotlib.dates as mdates from datetime import datetime # 数据 dates = [ "2024/12/20", "2024/12/21", "2024/12/22", "2024/12/23", "2024/12/24", "2024/12/25", "2024/12/26", "2024/12/27", "2024/12/28", "2024/12/29", "2024/12/30", "2024/12/31", "2025/1/1", "2025/1/2", "2025/1/3", "2025/1/4", "2025/1/5", "2025/1/6", "2025/1/7", "2025/1/8", "2025/1/9", "2025/1/10", "2025/1/11", "2025/1/12", "2025/1/13", "2025/1/14", "2025/1/15", "2025/1/16", "2025/1/17", "2025/1/18", "2025/1/19", "2025/1/20", "2025/1/21", "2025/1/22", "2025/1/23", "2025/1/24", "2025/1/25", "2025/1/26", "2025/1/27", "2025/1/28", "2025/1/29", "2025/1/30", "2025/1/31", "2025/2/1", "2025/2/2", "2025/2/3", "2025/2/4", "2025/2/5", "2025/2/6", "2025/2/7", "2025/2/8", "2025/2/9", "2025/2/10", "2025/2/11", "2025/2/12", "2025/2/13", "2025/2/14", "2025/2/15", "2025/2/16", "2025/2/17", "2025/2/18", "2025/2/19", "2025/2/20", "2025/2/21", "2025/2/22", "2025/2/23", "2025/2/24", "2025/2/25", "2025/2/26", "2025/2/27", "2025/2/28", "2025/3/1", "2025/3/2", "2025/3/3", "2025/3/4", "2025/3/5", "2025/3/6", "2025/3/7", "2025/3/8", "2025/3/9", "2025/3/10", "2025/3/11", "2025/3/12", "2025/3/13", "2025/3/14", "2025/3/15" ] counts = [ 97, 58, 58, 5, 97, 40, 6, 160, 13, 45, 14, 173, 96, 85, 83, 37, 141, 112, 17, 158, 52, 19, 279, 7, 44, 122, 141, 275, 87, 76, 410, 184, 217, 369, 67, 86, 10, 21, 223, 343, 39, 354, 128, 61, 145, 116, 112, 326, 94, 357, 46, 279, 288, 574, 83, 236, 53, 153, 22, 173, 61, 66, 163, 18, 199, 280, 116, 370, 147, 34, 198, 108, 176, 56, 57, 101, 46, 30, 210, 306, 197, 108, 208, 134, 251, 266 ] # 将日期字符串转换为datetime对象 dates = [datetime.strptime(date, "%Y/%m/%d") for date in dates] # 创建图形 plt.figure(figsize=(15, 7)) # 绘制折线图 plt.plot(dates, counts, marker=&#39;o&#39;, linestyle=&#39;-&#39;, color=&#39;b&#39;) # 设置标题和标签 plt.title("信息条数随时间变化", fontsize=16) plt.xlabel("日期", fontsize=14) plt.ylabel("信息条数", fontsize=14) # 格式化x轴日
03-19
import numpy as np with open (r"C:\Users\罗敏坪\Downloads\600519历史数据.csv","w") as fdata: fdata.write("""2025/1/27 1,434.99 1,437.00 1,443.97 1,427.02 2.94M -0.07% 2025/1/24 1,436.00 1,442.00 1,447.79 1,430.31 3.14M -0.49% 2025/1/23 1,443.00 1,449.97 1,468.00 1,438.00 2.71M 0.14% 2025/1/22 1,441.00 1,463.27 1,467.95 1,438.00 2.83M -1.85% 2025/1/21 1,468.15 1,481.00 1,482.00 1,465.00 1.69M -0.45% 2025/1/20 1,474.80 1,461.00 1,489.79 1,460.00 3.14M 1.38% 2025/1/17 1,454.75 1,446.39 1,461.00 1,446.38 1.83M 0.58% 2025/1/16 1,446.38 1,474.00 1,482.66 1,442.00 2.63M -1.69% 2025/1/15 1,471.27 1,467.00 1,474.60 1,460.01 1.84M -0.08% 2025/1/14 1,472.50 1,444.95 1,478.68 1,442.00 3.10M 1.98% 2025/1/13 1,443.98 1,425.00 1,444.44 1,422.01 2.11M 0.56% 2025/1/10 1,436.00 1,447.10 1,451.95 1,436.00 2.19M -0.55% 2025/1/9 1,444.00 1,448.99 1,464.58 1,432.98 2.97M 0.10% 2025/1/8 1,442.50 1,440.00 1,451.82 1,426.66 3.53M 0.16% 2025/1/7 1,440.20 1,444.66 1,451.89 1,439.00 2.42M 0.01% 2025/1/6 1,440.00 1,453.00 1,462.66 1,432.80 4.43M -2.37% 2025/1/3 1,475.00 1,494.50 1,494.99 1,467.01 3.26M -0.87% 2025/1/2 1,488.00 1,524.00 1,524.49 1,480.00 5.00M -2.36% """) end_price,high_price,low_price,turnover=np.loadtxt( fname=r"C:\Users\罗敏坪\Downloads\600519历史数据.csv", delimiter=&#39;,&#39;, usecols=(1,3,4,5), unpack=True ) print("平均价格 =", np.average(end_price)) print("成交量加权平均价格 =", np.average(end_price, weights=turnover)) print("最高价 =", high_price.max()) print("最低价 =", low_price.min()) print("最高价极差 =", high_price.ptp()) print("最低价极差 =", low_price.ptp()) print("中位数 =", np.median(end_price)) print("方差 =", np.var(end_price)) 帮我看一下为什么出错,要怎么解决
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值