Description
問長度爲N,字符集大小爲K的字符串中有多少個,在經過若干次“把第一個字符扔到最後面”的操作之後變成迴文串。
N,K<=10^9
Analysis
對於每個迴文串考慮由它產生的不同字符串個數。
可以發現是跟它的最小週期d相關的。因爲操作了d次之後又變回了原串,就重複了。
對於d爲奇數的情況,字符串的貢獻就是d
但是對於d爲偶數的情況,貢獻是d/2,因爲迴文串的週期串也必定迴文,假設週期串S形如AA,顯然把第一個A放到後面時就產生了重複。
奇數就是d的理由是週期串必定形如AcA,可以發現並不會重複。
那麼問題變成求出“長度爲N,字符集大小爲K,最小週期長度爲x”的字符串個數。遞推去重即可。