目录
试题A:工作时长
excel处理
- 把数据复制到excel,并选中列右键选择设置单元格格式
- 注意:因为求和之后总小时数可能会超过24小时,不要选择最前面是hh的,选择[h]:mm:ss可以用来显示小时数超过 24 小时的时间值。
- 接着,在B2输入计算公式A2-A1,B4输入计算公式A4-A3,选中处理好的这四个往下拉,填充剩下所有数据
- 在其他任意空白单元格设置好相同的格式,对B这一列求和,最后将得到的结果转换为秒为单位
- 答案:5101913
代码
#先排序,然后转换为时间戳,后一个时间减去上一个时间,累计差值
from datetime import datetime
# 创建一个空列表,用于存储时间数据
time_list = []
# 使用with语句打开文件,确保文件在使用完后自动关闭
with open("records.txt", 'r') as fp:
# 逐行读取文件数据
for line in fp.readlines():
# 去除每行数据的首尾空格和换行符
line = line.strip()
# 将时间字符串转换为datetime对象
time_item = datetime.strptime(line, "%Y-%m-%d %H:%M:%S")
# 将转换后的时间对象添加到列表中
time_list.append(time_item)
# 对时间列表进行排序,以便按升序排列
time_list.sort()
# 初始化变量,用于存储计算结果
ans = 0
# 遍历索引序列,步长为2,从1开始到time_list的长度
for i in range(1, len(time_list), 2):
# 计算相邻时间数据之间的时间差,并将时间差的秒数累加到ans中
ans += (time_list[i] - time_list[i - 1]).seconds
# 打印计算结果
print(ans)
- 答案:5101913
试题B:分糖果
试题C:填充
试题D:互质数的个数
题解:暴力
- 获取a,b,计算a的b次幂记为c,遍历1到c,判断如果与c互质count++
import math
a,b=map(int,input().split())
c=a**b
count=0
for i in range(1,c):
if math.gcd(i,c)==1:
count+=1
print(count%998244353)
- 27分
试题E:阶乘的和
题解:暴力+备忘录
def func(x,memo):
if x in memo:#在计算前先查一下备忘录
return memo[x]
re=1
for i in range(1,x+1):
re*=i
memo[x]=re#存入备忘录
return re
n=int(input())
a=list((map(int,input().split())))
memo={}#定义备忘录
for i in range(len(a)):
a[i]=func(a[i],memo)
x=sum(a)
#得到了所有元素阶乘和,遍历和求得是谁得阶乘
res=0
for i in range(1,x):
if func(i,memo)==x:
res=i
break
print(res)
- 5分
试题F:公因数匹配
- 思路:两个for循环遍历数组,如果两个指针对应的数存在公因数就把下标加入结果列表,对结果列表升序排序两次,输出第一个
题解:暴力
import math
n=int(input())
a=list(map(int,input().split()))
a.insert(0,0)#在a数组前面补0,下标统一后移1
res=[]
i=1
while i<len(a)-1:
j=i+1
while j<len(a):
if math.gcd(a[i],a[j])>1:
res.append([i,j])
j+=1
i+=1
res.sort(key=lambda x:x[0])
res.sort(key=lambda x:x[1])
if len(res) > 0:
print(res[0][0],res[0][1])
- 5分(受限python语言),换成C++可得45分
试题G:小蓝的旅行计划
题解
标签:试题,python,res,题解,list,蓝桥,time,省赛,memo
From: https://www.cnblogs.com/lushuang55/p/18120575