记录第一次参加线上编程考试。
一共有5道题目,其中我只做了1、2,第2道最后思路对了,但是没时间改了(中途去拉肚子了)一开始没仔细看题目要求,以为只可以用C++语言写,两年没写C++了都快忘完了,后来再仔细看看,原来可以选择其它语言,这里也拖了很多时间。
趁我还记得,先记一下第一道题。
举例:
输入:
3
02:10
200
输出:
2
22:50
day表示星期几
time表示几点几分
delta表示往前推移的时间间隔
注意:星期四的00:00前一分钟是星期三的23:59
day=int(input())
time=input()
delta=input()
h=int(time[0:2])
mins=int(time[3:5])
for i in range(int(delta)):
if mins==0:
if h==0:
if day==1:
day=7
h=23
mins=59
continue
if day!=1:
day-=1
h=23
mins=59
continue
if h!=0:
h-=1
mins=59
continue
if mins!=0:
mins-=1
print(day)
if h<10:
print('0'+str(h)+':'+str(mins))
if h>=10:
print(str(h)+':'+str(mins))
输入和输出结果:
3
02:10
200
2
22:50
第2道:
举例:
输入:
5
5 3 1 4 2#A[i]表示第i个出发的运动员的编号
2 4 5 1 3#B[i]表示第i个到达的运动员的编号
输出:
3#除了3号和5号运动员,其余人都可以拿到奖章,因为他们都至少超过了出发在他们之前的一位运动员
n=int(input())
a1=input().split()
a2=input().split()
num=[]
for k in range(1,n+1):
num.append(str(k))
A=dict(zip(a1,num))
B=dict(zip(num,a2))
flag=0
for i in range(1,n+1):
for j in range(i+1,n+1):
i=str(i)
j=str(j)
if int(A[B[j]])<int(B[i]):
flag+=1
break
print(flag)
输入和输出结果:
5
5 3 1 4 2
2 4 5 1 3
3
注意
一开始的时候,if int(A[B[j]])
后来去洗澡了,洗着洗着就恍然大悟,原来是这句if出现了问题,整个程序中出现了多次str和int的转换,唯独这里忘了,因为字符串的比较从第一个字符开始,所以’10’和’1-9’比较的时候总是’10’小,导致两位数运动员的情况下会出错。
Python语言还是初学,C++虽然不能算初学了,但也快忘光了,好多排序法都不记得了,接下来还是要继续理论结合实践,努力学习嗷