2012年8月26日星期日

Codeforces #132 (Div. 2) E - Periodical Numbers

Dynamic Scoring 是 3000 的題目 (所以也不是每個高手在現場解決了)
Virtual Participation 時花了 40 分鐘沒能搞定的題
不過當時有正確的大方向 (枚舉)

題意

將一個正整數 X 表示為 n-bit 的 binary-string, S
不可以有前置零 (leading zeros)
若果存在 長度為 k < n 的 循環節 (period)
(i.e., 使得 S[i+k] = S[i]   for 0 <= i < n-k)
則稱 X 為 periodical

給定區間 [L, R], 問當中有多少個 periodical 的正整數

(題目連結)

思路

先把問題簡化為
求 [1, R] 當中 periodical 正整數的個數
(那麼最後答案 := DOIT(R) - DOIT(L-1))

對於 循環節 長度為 k 的 X,可以將 X 表示成:
  • X = Y × (00...01 00...01 00...01 ... 00...01)   (二進制表示及計算,下同)
  • (00...01 00...01 00...01 ... 00...01) 是 m-bit 二進位數,其中 m <= n
  • 每一個 00...01 是 k-bit 二進位數

2012年8月21日星期二

隨筆 2012-08-21 - 近(?)況

快封塵了... 其實先前寫左好幾篇, 最後冇submit...
嗯... 今次出一篇全年總結吧

過去一年 (2011夏 - 2012夏)... 學術 / ACM / 工作方面, 我一直...

2011年7月26日星期二

[溫故知新,數論] Prmitive Root modulo n

(以下定義/定理或者未夠嚴僅... 數學人請見諒...)

記錄一下每年 "瞬耳即忘" 的數論知識...
雖然網上有很多 material
不過還是親手記下才更深刻
亦好讓日後能循著相似的思路重溫

先來的是在往年的 Training Record 就有提過...
而且(包括算法競賽)應用極廣的:

Theorem 1 (Euler's Totient Theorem)
若 (a, n) = 1
a
Φ(n) ≡ 1 (mod n)


Definition 1 (Multiplicative Order)
a 的 (multiplicative) order modulo n 是最小的 h
使得 ah ≡ 1 (mod n)
以下為 (hopefully) 較直觀的解說:
a 的 order 就是 {xi} 的最小循環節
其中 x1 := 1 (mod m), xk :=  xk-1 × a (mod n)


Definition 2 (Primitive Root)

2011年7月1日星期五

隨筆 2011-07-01 - Finals 過後...

不是考試的 Finals...
是 ACM World Finals...

World Finals 戰記一直沒心情寫
因為太遺憾吧...
(話說當日正賽過後回到房間我居然哭了... 都多少年沒有事情讓我哭過了...)

在 Joe 發佈戰記那一天
才有一點刺激讓我花幾個小時一口氣寫了一大堆...
不過那才記述了三份一至二份之一...
然後又因沒心情 +種種事務繁忙一直沒有再寫...

就這樣, 居然一拖便拖了一個月時間...



今年是 CUHK 的尖峰吧...?

2011年5月30日星期一

[ACM ICPC] World Finals 2011 : Day 2 熱身

(近兩日上網速度大覆降低...)
(相片後補...)

是日活動全部在酒店舉行
但行程相當緊湊



Opening Ceremony
跟以往差不多



Contest Orientation
試了 stack size 等等的東西
貌似拿了個還可以的 rank 3