不久之前,邪惡的綠茶大魔王將城堡裡一間刻有藍黃蛇形紋的殿堂鎖起來了。 而殿堂的門上有10道鎖,貝利的好朋友——善良小兔和小貓發現這些鎖是有一定規律的。 端詳之際,貝利看見門下有10組若隱若現的數字,他們覺得這些數字是解開鎖的線索,便轉身向守衛求助。 年老的烏龜守衛印證了貝利的猜想,它幫助貝利推算出了鎖的邏輯,並將它們寫在一張紙上。它告訴貝利,在這10個鎖中,只有前5個鎖會在給錯密鑰時發出紅色的光芒,而後5個則不會有任何動靜。 拿著老守衛給他的紙,貝利鑽研了幾天後仍束手無策,你能幫助他進入大殿嗎?
老守衛給出的代碼中寫入了所有鎖的資料與內部方法,而你只需要幫助貝利找出每個鎖的解鎖密鑰就好。
LockSolver這個類別當中存有開鎖的內部邏輯,你必須將LockSolver實例化之後才能使用。
你需要寫出一個solve函數,用於計算鎖的解鎖密鑰。run方法與solve函數的關係就好比鎖頭與鑰匙,把solve函數傳入run方法之後,run方法將會使用solve函數來計算出每個鎖的密鑰,前5組鎖會有錯誤提示。
當你確認十組密鑰都沒錯的時候,將伺服器的創立日期20180627
(請使用字串型態)傳入getPassword方法並呼叫,它將會回傳一組最終密鑰,得到該密鑰後在#🔰coder認證頻道輸入at<語言> <密鑰>
驗證你的答案。
門鎖會把十組數字(0≤N<10^19)(長度≥2)分別使用字串型態傳入solve函數的第一個變數(token)。 為了能找出每個鎖的解鎖密鑰,你必須依照下面的邏輯撰寫solve函數:
- 將token的每個數字相加後,記錄結果。
- 將token的第一個數字與倒數第二個數字相加後,記錄結果。
- 呼叫encrypt方法,傳入整數形態的原始token後,記錄得到的結果。
- 將以上(1,2,3)步驟得到的結果全部相加之後,這將會是你的答案。
- 如果第4步驟得出的答案超過674361,你必須將它減上78763。
- 以字串型態回傳運算出的結果。
執行LockSolver的run方法,傳入你完成的solve函數,沒有出現錯誤提示之後再使用getPassword方法就能得到最終密鑰了。(記得先將LockSolver實例化)
路過的勇者示範了解開一個鎖的過程,他的token為12345
:
- 1+2+3+4+5 = 15
- 1+4 = 5
- 呼叫encrypt傳入
12345
,回傳值2333 - 15+5+2333 = 2353
- 由於2353小於674361,答案保持不變
- 回傳字串型態的2353
語言 | 最低版本 |
---|---|
Python | 3.0 |
JavaScript | ES6 |
C++ | 11 |
C# | 8 (.NET Core) |
Kotlin | 1.3 |