#14252: 最後三組測資怎麼過?


qqqq123 (unknown)

學校 : 不指定學校
編號 : 79351
來源 : [140.113.92.245]
最後登入時間 :
2020-11-25 16:01:14
c658. 小新的提款卡密碼 -- it's david | From: [1.200.55.139] | 發表日期 : 2018-07-06 10:33

我用next_permutation(),但是會TLE。。。

 
#14757: Re:最後三組測資怎麼過?


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-12-02 21:50:32
c658. 小新的提款卡密碼 -- it's david | From: [61.223.63.205] | 發表日期 : 2018-08-02 16:00

我用next_permutation(),但是會TLE。。。


用 next_permutation() 無法 AC

 
#17153: Re:最後三組測資怎麼過?


hq8398 (一群牛)

學校 : 國立花蓮高級中學
編號 : 88824
來源 : [1.164.108.193]
最後登入時間 :
2024-04-28 01:30:58
c658. 小新的提款卡密碼 -- it's david | From: [118.169.195.241] | 發表日期 : 2019-03-17 15:31

我用next_permutation(),但是會TLE。。。

我用DFS也是炸後面三組

 
#17156: Re:最後三組測資怎麼過?


rollfc (胖胖貓)

學校 : 國立清華大學
編號 : 81012
來源 : [36.229.38.137]
最後登入時間 :
2024-12-03 20:11:44
c658. 小新的提款卡密碼 -- it's david | From: [140.113.136.220] | 發表日期 : 2019-03-18 03:54

我用next_permutation(),但是會TLE。。。

我用DFS也是炸後面三組


DFS會出現TLE,代表要找齊一樣是相同位數的可能性數字,再檢驗他是不是某個數字平方的方式是不可行。

當位數最大是10位數時每次排序的可能範圍最多是 9x9! 種可能(雖然檢驗的時間成本可以視為O(1))。

不如換個角度,題目要找到最少4位數,最多10位數的數字中(該數字剛好是個平方數且每個位數都不包含0)

那就搜集所有可以形成上述條件數字的平方數,也就是介於[ 34, 99999]之間的平方數並剔除包含0的數字,

針對每個數字拆成各個位數排序,用 HashTable 的方式紀錄,例如第一筆測資的 1296 2916 9216 可以把這三組都歸類到 1269 這組key

之後只要輸入數字就將他拆成各個位數後排序再組成一個數字後,檢查 HashTable 裡面有沒有這組 key 存在沒有就是輸出 -1,有就輸出所有的 value 即可。

 

 
#17157: Re:最後三組測資怎麼過?


rollfc (胖胖貓)

學校 : 國立清華大學
編號 : 81012
來源 : [36.229.38.137]
最後登入時間 :
2024-12-03 20:11:44
c658. 小新的提款卡密碼 -- it's david | From: [140.113.136.220] | 發表日期 : 2019-03-18 04:01

 

DFS會出現TLE,代表要找齊一樣是相同位數的可能性數字,再檢驗他是不是某個數字平方的方式是不可行。

當位數最大是10位數時每次排序的可能範圍最多是 9x9! 種可能(雖然檢驗的時間成本可以視為O(1))。

不如換個角度,題目要找到最少4位數,最多10位數的數字中(該數字剛好是個平方數且每個位數都不包含0)

那就搜集所有可以形成上述條件數字的平方數,也就是介於[ 34, 99999]之間的平方數並剔除包含0的數字,

針對每個數字拆成各個位數排序,用 HashTable 的方式紀錄,例如第一筆測資的 1296 2916 9216 可以把這三組都歸類到 1269 這組key

之後只要輸入數字就將他拆成各個位數後排序再組成一個數字後,檢查 HashTable 裡面有沒有這組 key 存在沒有就是輸出 -1,有就輸出所有的 value 即可。

 


說錯,找不到時是輸出 0 。

這邊補充一下方便偵錯:

          #合法平方數  ->  #不重複的key

二位數             44   ->     40

三位數           512   ->    400

四位數          4046  ->   2470

五位數         32440 -> 12345

 
ZeroJudge Forum