#31191: [Python]參考詳解


kingdom0987123@gmail.com (Alex Cheng)

學校 : 不指定學校
編號 : 196345
來源 : [140.117.194.238]
最後登入時間 :
2024-10-06 02:13:07
a054. 電話客服中心 -- 板橋高中教學題 | From: [180.176.132.90] | 發表日期 : 2022-07-18 12:47

本人也算是新手,所以以下程式碼簡單參考就好,希望說明足夠讓同為程式小白的人稍微明白些。
 
*最後一碼為檢查碼c,若c=0則代表10
*輸入後9碼 打印可能的區域代碼(A~Z)

 

step1: 設行政區代碼ab , a+9b之個位數字為m1(未知) , 將行政區代碼先轉成m1的dictionary
step2: 輸入的前8碼依序乘上8~1並加總 , 取個位數字m2
step3: 各位數字乘積總和s的個位數m = m1+m2之個位數字 , 又 m = 10-c
step4: 在dictionary中尋找符合等式的m1

 

ex: ab130245675 , s = (a + 9b) + (8*1 + 7*3 +...+ 1*5) , 5為檢查碼
8*1 + 7*3 +...+ 2*7 + 1*5 的個位數m2 = 9
c = 5 -> m = 10-5 = 5
5 = m1+9之個位數字
因為6+9 = 15 -> m1 = 6 , 所以符合條件的有:'F'、'S'
'''

 

region = {'A': 1, 'B': 0, 'C': 9, 'D': 8, 'E': 7, 'F': 6, 'G': 5, 'H': 4, 'I': 9, 'J': 3, 'K': 2, 'L': 2, 'M': 1, 'N': 0, 'O': 8, 'P': 9, 'Q': 8, 'R': 7, 'S': 6, 'T': 5, 'U': 4, 'V': 3, 'W': 1, 'X': 3, 'Y': 2, 'Z': 0}

 

id_code = input()
c = id_code[-1]
if c == '0':
    c == '10'

 

sum_ = 0
for i in range(8):
    sum_ += int(id_code[i])*(8-i)
m2 = sum_%10

 

m = 10-int(c)

 

for k,m1 in region.items():
    if m == (m1+m2)%10:
        print(k,end='')
 
 
以下為簡化版本:
region = {'BNZ': 0, 'AMW': 1, 'KLY': 2, 'JVX': 3, 'HU': 4, 'GT': 5, 'FS': 6, 'ER': 7, 'DOQ': 8, 'CIP': 9}

 

id_code = [int(i)for i in input()]
m2 = sum([int(id_code[i])*(8-i) for i in range(8)])%10
if int(id_code[-1]) ==0:
    c = 10
else:
    c = int(id_code[-1])

 

for k,m1 in region.items():
    if (m1+m2)%10 == 10-c:
        print(k)
 
ZeroJudge Forum