#22945: 建表解說明


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
f250. ugly ++ -- d129(00136) | From: [1.173.117.240] | 發表日期 : 2020-10-13 01:16

題目給的「註」是滿有幫助的提示,限縮要測試的數字範圍

u[10000] < 10^18

這題我是用建表法,C++ 可以 2ms 過,至於要建多大,煩請客官們自己試試看

從頭跑到 10^18 太花時間,不推薦

for (n = 1; n < 10^18; n++) {
  // test if n is an ugly number
}

不如就定義,直接取 2 或 3 或 5 的倍數

for (n2 = 1; n2 < 10^18; n2 *= 2) {
  for (n3 = 1; n2*n3 < 10^18; n3 *= 3) {
    for (n5 = 1; n2*n3*n5 < 10^18; n5 *= 5) {
      // n2*n3*n5 must be an ugly number
    }
  }
}

建完表,就輸入的 n 查表即可 AC

 
ZeroJudge Forum