题目描述:
有一个“爱情测试研究所”请你帮助写一个测恋人名字的小程序,需求如下:
- 需要准备一本“答案之书”,书中列出若干由 4 ~ 8 个中文字组成的句子,即为测试答案。部分答案是正向的,例如“其实我在等你”;部分答案是负向的,例如“相见不如怀念”。
- 提取句子中每个字的汉语拼音首字母,例如“其实我在等你”对应“qswzdn”,“相见不如怀念”对应“xjbrhn”。
- 接收两位用户输入的姓名,同样提取名字中每个字的汉语拼音首字母,形成姓名缩写。例如“张丹宁”对应“zdn”,“齐少文”对应“qsw”。
- 将两位用户的姓名缩写拼接在一起,去答案之书中寻找缩写完全一致的答案,并输出。例如“齐少文”和“张丹宁”的名字拼接起来,就可以得到“其实我在等你”。
当然答案之书的答案可能是不唯一的 —— 两个名字的先后拼接顺序就至少对应了两种可能的答案。对于同一种拼接,答案之书也可能有多个答案与之对应。则输出规则如下:
- 在所有对应的答案有正向有负向时,一定选择正向的答案输出;没有正向答案的时候只好选择负向的。
- 如果前一步选择的同向答案不唯一,则首先将这些答案按其在书中的编号递增排序,然后输出第 k(≥1)个答案,其中 k=nt%na+1,nt 是两位用户姓名的汉语拼音字母总数,na 是候选输出答案的总数。
输入格式:
输入首先在第一行给出一个正整数 n(≤105),是答案之书中答案的个数。随后 n 行,每行(以回车结束)按下列格式给出一句答案:
答案属性 用汉语拼音给出的答案句子
其中答案属性
为 1 表示正向,为 0 表示负向;用汉语拼音给出的答案句子
由 4 ~ 8 个中文字的汉语拼音组成,相邻两字间以 1 个空格分隔,每个字的拼音长度不超过 5 个小写英文字母。注意:这里默认第 i 行给出的答案对应编号为 i(1≤i≤n)。
随后一行给出正整数 m(≤103),是前来咨询的用户对数。随后 2m 行,每行(以回车结束)给出一位用户的姓名,由 2 ~ 4 个中文字组成,同样以汉语拼音的格式给出,即相邻两字间以 1 个空格分隔,每个字的拼音长度不超过 5 个小写英文字母。默认每 2 行对应一对用户。
输出格式:
对前来咨询的每一对用户,按照题面给出的规则输出答案之书的答案。如果答案不存在,则输出 tian ji bu ke xie lu
(天机不可泄露)。
输入样例:
4
1 que shi wo zai deng nin
0 xiang jian bu ru huai nian
1 qi shi wo zai deng ni
0 zha da nan qi si wo
3
zhang dan ning
qi shao wen
ren huai nan
xiao jin bo
wo bu cun zai
ai
输出样例:
qi shi wo zai deng ni
xiang jian bu ru huai nian
tian ji bu ke xie lu
样例说明:
第 1 对用户可以得到 3 条答案,其中 2 条是正向的。这时 nt 是 21,na 是 2,则应该输出第 21%2+1=2 条候选答案。
第 2 对用户只能得到 1 条负向的答案。
第 3 对用户找不到答案。
代码展示:
n = int(input())
books = {}
for i in range(n):
book = input()
ac = book.split()
ans = ""
for nu in ac[1:]:
ans+=nu[0]
books[i] = [book[0],book[2:],ans]
m = int(input())
for _ in range(m):
all = ""
allt = ""
one_peo = input()
one = one_peo.split()
second_peo = input()
two = second_peo.split()
summ = one+two
sum_mu = len("".join(summ))
for nu in summ:
all+=nu[0]
summs = two+one
for nu in summs:
allt+=nu[0]
result = []
for value in books.values():
if all == value[2] or allt == value[2]:
result.append([value[0],value[1]])
if len(result) > 1:
new_result = []
new_result1 = []
for n in result:
if n[0] == "1":
new_result.append(n)
if n[0] == "0":
new_result1.append(n)
if len(new_result):
x = len(new_result)
print(new_result[sum_mu%x][1])
else:
x = len(new_result1)
print(new_result1[sum_mu%x][1])
elif len(result) == 1:
print(result[0][1])
else:
print("tian ji bu ke xie lu")