n = int(input())# --------- 把輸入的學生資訊用列表儲存
studen_list =
for i in range(n):
temp = input().split()
for i in range(n):
studen_list[i][1] = int(studen_list[i][1])
studen_list[i][2] = int(studen_list[i][2])
# --------- 把月份和日期都轉換為0102這樣的格式,為了下面做鋪墊
for i in range(n):
if studen_list[i][1] < 10:
studen_list[i][1] = '0' + str(studen_list[i][1])
if studen_list[i][2] < 10:
studen_list[i][2] = '0' + str(studen_list[i][2])
# --------- 把學生的資訊用字典儲存,以生日為 key ,姓名為 value
studen_dict = {}
for i in range(n):
day = str(studen_list[i][1]) + str(studen_list[i][2])
if day in studen_dict:
studen_dict[day] += studen_list[i][0] + ','
else:
studen_dict[day] = studen_list[i][0] + ','
# --------- 排序,按照日期從小到達進行排序
a = sorted(studen_dict.items(), key=lambda x: x[0])
#print(a)
# --------- 輸出有生日相同的學生資訊
count = 0
for i in range(len(a)):
temp1 = a[i][1].split(',') # 以逗號分隔姓名,temp1 的型別為列表
temp1.remove('')
# 對學生的姓名進行排序先按名字從短到長排,在長度相同的情況按字典順序排
temp1.sort(key=lambda x: (len(x), x))
temp = ''
if len(temp1) > 1:
for v in temp1:
temp += v + " "
# a[i][0] 的型別是字串;a[i][0][0:2]是取出字串 a[i][0] 中的前兩位
print(str(int(a[i][0][0:2])) + ' ' + str(int(a[i][0][2:4])) + ' ' + temp)
else:
count += 1
if count == n:
print('none')
生日相同(結構體)
描述 在乙個有180人的大班級中,存在兩個人生日相同的概率非常大,現給出每個學生的學號,出生月日。試找出所有生日相同的學生。輸入第一行為整數n,表示有n個學生,n 100。此後每行包含乙個字串和兩個整數,分別表示學生的學號 字串長度小於10 和出生月 1 m 12 日 1 d 31 學號 月 日之間...
生日相同(結構體)
描述 在乙個有180人的大班級中,存在兩個人生日相同的概率非常大,現給出每個學生的學號,出生月日。試找出所有生日相同的學生。輸入 第一行為整數n,表示有n個學生,n 100。此後每行包含乙個字串和兩個整數,分別表示學生的學號 字串長度小於10 和出生月 1 m 12 日 1 d 31 學號 月 日之...
2724 生日相同
兩個問題 1 多組輸入 記得用while迴圈 2 根據輸入時間進行排序 總時間限制 1000ms 記憶體限制 65536kb 描述在乙個有180人的大班級中,存在兩個人生日相同的概率非常大,現給出每個學生的學號,出生月日。試找出所有生日相同的學生。輸入第一行為整數n,表示有n個學生,n 100。此後...