UVA 11754 Code Feat
阿新 • • 發佈:2020-07-09
https://vjudge.net/problem/UVA-11754
題目
需要算密碼$Q$,滿足$C$個條件,每個條件為$Q \mod X[i] \in \{ Y[i]_1, Y[i]_2, \cdots, Y[i]_k\}$,問最小的S個密碼是哪些。
保證X兩兩互素,所有X的積小於$2^{32}$,$1\leqslant C\leqslant 9$,$1\leqslant k\leqslant 100$,$X\geqslant 2$
#Sample Input 3 2 2 1 1 5 2 0 3 3 2 1 2 0 0 #Sample Output 5 13
題解
想不出快速的做法……
如果暴力列舉一組孫子定理的餘數,顯然超時
如果暴力列舉符合一個條件的所有數字然後判斷,有可能超時
為了不超時,假設最大的密碼是$Q_M\leqslant 2^{32}\times 11$
那麼,列舉的數字是$X[i]\times t+Y[i]_j$
也就是每$X[i]$個數字需要列舉$k$次
大概列舉$Q_M / X[i] \times k$次,感覺特別不靠譜
如果每個條件的餘數夠多,那麼可以少列舉一些數字
就有這樣的暴力:
當餘數比較少的時候,直接暴力列舉一組孫子定理的餘數,然後用孫子定理,不會超時
當餘數比較多的時候,暴力列舉數字,為了儘量少列舉,選擇$k/X[i]$小的一個條件,在餘數很多的情況下可以少列舉一些不符合條件的數字
//看了一眼書上的題解,看到了孫子定理,以為是什麼神奇的變形,怎麼也想不出來,難受地看了很久的數論書