Carousel of Combinations

最爱丁珰發表於2024-07-19

由圓排列的公式,不難有\(C(n,k)=(_k^n)\times \frac{k!}{k}\)

於是答案為\(\sum_{i=1}^{n}\sum_{j=1}^{i}((_j^i)\cdot (j-1)!)mod\space j\)

顯然交換求和次序,有\(\sum_{i=1}^{n}\sum_{j=i}^{n}((_i^j)\cdot (i-1)!)mod\space i\)

由威爾遜定理可將\(i\)限定在質數和\(4\)之中,再由盧卡斯定理(這個一定要手寫寫出來才會發現很容易化簡,比賽的時候就覺得可以用程式去算就沒有化簡,從而導致根本沒辦法往下面做,所以以後遇到公式了一定要手寫寫出來)可化簡為\(\sum_{i=1}^{n}\sum_{j=i}^{n}(\lfloor\frac{j}{i}\rfloor\cdot (i-1))mod\space i\)

補題的時候一直想的是每個\(i\)對整體的貢獻,但是題解告訴我們也可以考慮\(i\)對特定區域性的貢獻,最後將所有區域性彙總就好了

具體來說,這裡反過去考慮\(\sum_{i=1}^{n}\sum_{j=1}^{i}((_j^i)\cdot (j-1)!)mod\space j\),設\(dp[i]=\sum_{j=1}^{i}((_j^i)\cdot (j-1)!)mod\space j\),再考慮\(\sum_{i=1}^{n}\sum_{j=i}^{n}(\lfloor\frac{j}{i}\rfloor\cdot (i-1))mod\space i\),統計每個\(i\)\(dp\)陣列的貢獻(列舉倍數利用差分),時間複雜度為\(O(n\) ln \(n)\)