#30654: C語言快速解題


krameri120 (科科)

學校 : 國立臺南高級工業職業學校
編號 : 102318
來源 : [1.173.159.232]
最後登入時間 :
2024-06-06 10:31:47
e545. 10019 - Funny Encryption Method -- UVA | From: [110.26.101.32] | 發表日期 : 2022-06-03 20:29

這題如果要快一點的話,不必把進制轉換的值算出來,在數幾個1
你想想,21你轉2進制,你是不是可以想成 16+4+1
那直接建表不就好了,data[15]需要15個 data[0]=1 data[1]=2 data[2]=4.....

這樣你從最大data[15]開始判斷,假設if(M>data[x] )那M-=data[x] ,數這樣條件成立幾次即可

比如data[4] =16 example if(21 >=16 ){cnt_2+=1} => if(21-16)>=data[2]) {cnt_2+=1} => if(21-16-4)>=data[0] ){cnt_2+=1}

 
ZeroJudge Forum