第四届传智杯 | 练习赛 | python解法思路

题目列表

  • 导语
  • A [#4练习赛]符合条件的数
  • B [#4练习赛]选代表
  • C [#4练习赛]成绩统计
  • D [#4练习赛]背答案
  • E [#4练习赛]击鼓传花

导语

前几天传智杯出了练习赛,博主考研空闲之余,去做了一下
好长时间不能更新文章,实在是考研太忙
正好见很多粉丝留言传智杯的题目
网上也没有对应的教程(这也算是全网首篇了吧 啊哈哈哈,不过确实是很简单的题目)
博主也还没有系统的学过数据结构与算法 (开学以来一直在学操作系统和组成原理)
用自己的写法写了五道题的详解
希望大佬们多多指教
如果有大佬们可以传授一下考研经验
感激不尽

A [#4练习赛]符合条件的数

第四届传智杯 | 练习赛 | python解法思路_第1张图片
暴力破解

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练习赛]选代表

第四届传智杯 | 练习赛 | python解法思路_第2张图片
利用类似字词统计的原理,代码有注释

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练习赛]成绩统计

第四届传智杯 | 练习赛 | python解法思路_第3张图片
这里亲测不可以用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练习赛]背答案

第四届传智杯 | 练习赛 | python解法思路_第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练习赛]击鼓传花

第四届传智杯 | 练习赛 | python解法思路_第5张图片
击鼓传花可能有更好的算法进行解决,奈何我的数据结构还不是很精通,打算寒假学数据结构同时,刷一刷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)))

祝大家考研必胜!!!!!!!!!!!!

你可能感兴趣的:(python算法,python,算法,程序)