因為題目表明沒有 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。