ZeroJudge o087. 王子的名字

解題思路

這題給出了一個 Python 的函式,因此這裡較適合用 Python 解。必須利用此函式為各種名字評分,並依照分數排列名字。既然提姆已經給出算分函式,我們就不必知道算分函式的作用,知道他會回傳分數就好。

程式碼

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# o087 AC

# 題目給的函式,直接貼上來
def Evaluate(Name: str):
if(type(Name) != str):
return -1

Score = 0
NameLen = len(Name)

for i in range(NameLen):
CharCode = ord(Name[i])
Score += ((CharCode * 1123) % 1002)

while (CharCode > 0):
Score += (CharCode % 10)
CharCode = (CharCode // 10)

return (Score % 101)

# 輸入 N
n = int(input())

# 輸入 N 個名字,同時計算分數,並存入一個 list
name_list = []
for i in range(n):
name = input()
score = Evaluate(name) # 呼叫算分函式
name_list.append((name, score))

# 以分數排序名字
sorted_name_list = sorted(name_list, key=lambda x: x[1])

# 印出排序後的名字和分數
for i in sorted_name_list:
print(i[0], i[1])

Python AC