2014 Google Code Jam Round 1C

沒進,只對 A,不過這是我第一次 R1 破蛋……2013 年掛蛋,2011 年也是,其他年份沒參加。

一整個亂……= =

考慮過從最遠古的祖先直接建表,但想想覺得應該不行。就變成往回推的判斷:

  1. 若 Q 是奇數,則 impossible。
  2. Q / P = x (x 為整數) = 2 ^ n,則 ans = n
  3. Q' = Q / 2 直到 Q' < P(記錄除的次數 n),P' = P - Q',recursive 檢查 P'/Q' 是否可能出現。是則 ans = n,否則 impossible。

既然有 code 可以檢討還是檢討一下好了。

  1. 看看那精美的 scanf(),又一次 C++ format input/output 不熟。
  2. 邏輯上有方向但細節沒想清楚,像 Q 一直除 2 的時候原本沒先檢查是不是能整除,原本也沒處理處理特殊值 1。
  3. 大測資一開始沒用 long long int,然後就 segementation fault 了。