#41155:


xsw20080329@gmail.com (敢不敢讓我過)

學校 : 不指定學校
編號 : 242754
來源 : [163.32.56.88]
最後登入時間 :
2024-12-02 14:37:59
c658. 小新的提款卡密碼 -- it's david | From: [163.32.56.65] | 發表日期 : 2024-07-08 11:28

因為題目表明沒有 0 且位數是再 4~10 位數,所以在建表的時候,只需要建 36~99999 的平方項,且如果該項為 0 可直接跳過不紀錄。
而這題原本想建好表之後用 DFS 配合 BinarySearch 查表來解,無奈 10! 的可能性過多,最後 3 筆測資 TLE,所以改用 HashTable 來做。

根據題意只要是由 1,2,6,9 四個字組合而成的數,都要輸出 { 1296、2916、9216 } 三個,所以將它們視為一組答案,而既然他們是一組答案又要使用 HashTable 來做,1296、2916、9216 就應該共用一個 HashKey,所以在製成 HashKey 時,用基數排序紀錄每個數有幾個,再將它們打成 HashKey,如此一來不管原本是多少,只要構成的字元一樣,得到的 HashKey 就會是一樣的。

將表建好之後只要每次將輸入的字串打成 HashKey 查表,若有查到相同的答案則輸出,若否則代表這組數字組合無法組合成完全平方數,輸出 0。

 
ZeroJudge Forum