导语
前几天传智杯出了练习赛,博主考研空闲之余,去做了一下
好长时间不能更新文章,实在是考研太忙
正好见很多粉丝留言传智杯的题目
网上也没有对应的教程(这也算是全网首篇了吧 啊哈哈哈,不过确实是很简单的题目)
博主也还没有系统的学过数据结构与算法 (开学以来一直在学操作系统和组成原理)
用自己的写法写了五道题的详解
希望大佬们多多指教
如果有大佬们可以传授一下考研经验
感激不尽
A [#4练习赛]符合条件的数
暴力破解
N,k = map(int,input().split())
init_num = N
while True:
if str(init_num).count('3') == k:
print(init_num)
break
else:
init_num += 1
B [#4练习赛]选代表
利用类似字词统计的原理,代码有注释
timing = int(input())
xuehao_list = list(map(int,input().split()))
dict_num = {}
new_list = []
if len(xuehao_list) == timing:
for i in xuehao_list:
if i in dict_num:
dict_num[i] += 1
else:
# 这里的new_list保证按照输入顺序输出其中不重复的数字
new_list.append(i)
dict_num[i] = 1
for i in new_list:
print(i,end=' ')
C [#4练习赛]成绩统计
这里亲测不可以用import导入math,否则会一直报错,我还纠结了半天
geshu = int(input())
stu_list = []
for i in range(geshu):
stu_list.append(input().split())
dict_stu_list = {}
for stu_grade in stu_list:
temp = (int(stu_grade[2])**0.5) * 10
grade = temp * 0.6 + 0.4 * int(stu_grade[1])
# 如果有小数点,向上取整
if int(str(grade).split('.')[1])>0:
grade += 1
grade = int(grade)
dict_stu_list[stu_grade[0]] = grade
# 对字典进行排序
ord_dict_stu = sorted(dict_stu_list.items(),key=lambda x:x[1],reverse=True)
for i in ord_dict_stu:
print("{} {}".format(i[0],i[1]))
D [#4练习赛]背答案
这个题没啥说的,就是逻辑问题,但是,注意问题不能用字典存放,因为输入的问题有重复的问题,但是答案不存在重复的答案,这一个坑要注意
daan,ti_= map(int,input().split())
dict_daan = {}
dict_wenti = []
dict_xuanxiang = {1:'A',2:'B',3:'C',4:'D'}
for i in range(daan):
ti,daan = input().split()
dict_daan[ti] = daan
for i in range(ti_):
ti_2,A,B,C,D = input().split()
dict_wenti.append([ti_2,A,B,C,D])
for wenti in dict_wenti:
for daan in dict_daan.items():
if wenti[0] == daan[0]:
print(dict_xuanxiang[wenti.index(dict_daan[wenti[0]])])
E [#4练习赛]击鼓传花
击鼓传花可能有更好的算法进行解决,奈何我的数据结构还不是很精通,打算寒假学数据结构同时,刷一刷leedcode 提高一下算法思想。
n,m,k= map(int,input().split())
init_list = list(map(int,input().split()))
new_list = []
for j in range(5):
for i in range(m):
temp = (init_list[i]+k)%n
if temp>n-1:
temp = 0
init_list[i] = temp
for i in init_list.copy():
new_list.append(i)
print(n-len(set(new_list)))
祝大家考研必胜!!!!!!!!!!!!