题解 | #[NOIP2017]图书管理员#
[NOIP2017]图书管理员
https://ac.nowcoder.com/acm/problem/16422
解法一
n,q=map(int,input().split())
books = [input() for i in range(n)]
for _ in range(q):
len,code = input().split()
code = [int(i) for i in books if i[-int(len):]==code]
print(min(code))if code!=[] else print(-1)
code = [int(i) for i in books if i[-int(len):] == code]:
> 这行代码使用列表推导式,遍历 books 列表中的每个书籍名称,检查书籍名称结尾是否与 code 相匹配。如果匹配,将符合条件的元素转换为整数并存储在新列表 code 中。
> i:表示要进行操作的字符串。
[-int(len):]:根据负数索引的规则,-int(len) 表示倒数第 int(len) 个字符的位置。对于切片操作 [-int(len):],它从倒数第 int(len) 个字符开始一直到字符串末尾的位置,包括倒数第 int(len) 个字符但不包括最后一个字符
解法二
n,p=map(int,input().split())
a=[]
for i in range(n):
a.append(int(input()))
a.sort()
for i in range(p):
c,d=map(int,input().split())
for i in a:
if i%(10**c)==d:
print(i)
break
else:
print(-1)