ARC 064 F-Rotated Palindromes

题意

问有多少个长度为 \(N\) 且字符集大小为 \(K\) 的字符串可以通过回文串旋转 (把第一个字符移到最后)若干次得到。\(N,K\le 10^9\)

做法

\(f_i\)为最小周期为\(i\)的回文串个数
\(f_i=K^{\left\lceil\frac{i}{2}\right\rceil}-\sum\limits_{j|i,j\neq i}f_{j}\)

\(i%N\neq 0\),可以通过是回文串的性质,将其调整为更小的\(i\)或更大的\(i\),所以这里我们只考虑\(i|N\)

一个周期为\(i\),则可表示本质不同的\(i\)个串
若周期\(i\)为偶数,移位\(\frac{i}{2}\)后也是一个周期为\(i\)的回文串,所以会被统计两次

故:\[Ans=\sum\limits_{d|N,d~is~odd}f_d\cdot d+\frac{1}{2}\sum\limits_{d|N,d~is~even}f_d\cdot d\]

直接暴力是可过的

猜你喜欢

转载自www.cnblogs.com/Grice/p/12370490.html
064
arc