Skip to content
On this page

招行卡中心笔试

2023.4.9

1.小红拿到了一个字符串,她希望每隔k个字符就删除一个字符(第一个字符必定删除)。你能帮小红输出最终的字符串吗?
输入描述:
第一行输入一个正整数k。
第二行输入一个字符串,长度不超过200000且大于1。
1≤k≤100。
输出描述:
删除后的字符串。
输入:
2
ans?-1:1
输出:
ns-11

python
n = int(input()) + 1
s = input()
ans = ''
for i in range(len(s)):
    if i % n == 0:
        continue
    ans += s[i]
print(ans)

2.考试结束了,小红拿到了大家的成绩单。总共有语文、数学、英语3科的信息,已经总成绩的信息。但是成绩单有一些地方模糊不清了。你可以帮小红尽量还原一下吗?
输入描述:
第一行输入一个正整数n,代表学生人数。
接下来的几行,每行输入若干字符串和整数,从左到右别是学生姓名、语文成绩、数学成绩、英语成绩、总成绩。
学生姓名是长度不大于10且仅有小写字母的字符申,语文成绩、数学成绩、英语成绩、总成绩都是整数。
如果某个地方看不清了,则会用"?"表示。
1≤n≤100
每科最低0分,满分100分。
输出描述:
共输出n行,需要将能还原的尽量还原。
输出需要按每个人的总成绩进行排序,总成绩相同的按名字字典序升序进行排序(若此时名字无法确认则排在该总成绩的最下面,有多个无法确认时按输入的顺序排序)。若有总成绩无法确认则排在最下面,同样按名字字典序升序(若此时名字无法确认则排在最下面,有多个无法确认时按输入的顺序排序)。
输入:
8
ranko 100 100 100 ?
kotori 90 ? 80 ?
? ? 22 ? ?
ayya ? 80 ? 240
ruby 59 100 ? 200
? 80 90 ? ?
? 80 90 70 240
aya 80 80 80 ?
输出:
ranko 100 100 100 300
aya 80 80 80 240
ayya ? 80 ? 240
? 80 90 70 240
ruby 59 100 41 200
kotori 90 ? 80 ?
? ? 22 ? ?
? 80 90 ? ?

python
n = int(input())
data = []
for i in range(n):
    p = input().split()
    for j in range(len(p)):
        try:
            p[j] = int(p[j])
        except:
            None
    data.append(p)
for p in data:
    table = {}
    for i in range(1, 5):
        if p[i] != '?': table[i] = p[i]
        if len(table) == 4 or len(table) < 3:
            continue
        if 1 not in table: p[1] = p[4] - p[3] - p[2]
        elif 2 not in table: p[2] = p[4] - p[3] - p[1]
        elif 3 not in table: p[3] = p[4] - p[2] - p[1]
        else: p[4] = p[1] + p[2] + p[3]
for p in data:
    if p[0] == '?': p[0] = 'z'*11
    if p[-1] == '?': p[-1] = -1
data.sort(key=lambda x:(-x[-1], x[0]))
for i in range(len(data)):
    p = data[i]
    if p[-1] == -1: p[-1] = '?'
    if p[0] == 'z'*11: p[0] = '?'
    for j in range(len(p)):
        if type(p[j]) == int:
            p[j] = str(p[j])
for p in data:
    print(' '.join(p))