2014 Google Code Jam Round 1C
沒進,只對 A,不過這是我第一次 R1 破蛋……2013 年掛蛋,2011 年也是,其他年份沒參加。
一整個亂……= =
考慮過從最遠古的祖先直接建表,但想想覺得應該不行。就變成往回推的判斷:
- 若 Q 是奇數,則 impossible。
- 若
Q / P = x (x 為整數) = 2 ^ n
,則ans = n
。 Q' = Q / 2
直到Q' < P
(記錄除的次數 n),P' = P - Q'
,recursive 檢查P'/Q'
是否可能出現。是則ans = n
,否則 impossible。
既然有 code 可以檢討還是檢討一下好了。
- 看看那精美的
scanf()
,又一次 C++ format input/output 不熟。 - 邏輯上有方向但細節沒想清楚,像 Q 一直除 2 的時候原本沒先檢查是不是能整除,原本也沒處理處理特殊值 1。
- 大測資一開始沒用
long long int
,然後就 segementation fault 了。