第十四届蓝桥杯省赛研究生组python

试题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:小蓝的旅行计划

题解


posted @ 2024-04-08 20:10  Frommoon  阅读(139)  评论(0编辑  收藏  举报