题意
问有多少个长度为 (N) 且字符集大小为 (K) 的字符串可以通过回文串旋转 (把第一个字符移到最后)若干次得到。(N,Kle 10^9)
做法
设(f_i)为最小周期为(i)的回文串个数
有(f_i=K^{leftlceilfrac{i}{2}
ight
ceil}-sumlimits_{j|i,j
eq i}f_{j})
若(i%N eq 0),可以通过是回文串的性质,将其调整为更小的(i)或更大的(i),所以这里我们只考虑(i|N)
一个周期为(i),则可表示本质不同的(i)个串
若周期(i)为偶数,移位(frac{i}{2})后也是一个周期为(i)的回文串,所以会被统计两次
故:
[Ans=sumlimits_{d|N,d~is~odd}f_dcdot d+frac{1}{2}sumlimits_{d|N,d~is~even}f_dcdot d
]
直接暴力是可过的