题意

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

做法

ARC64F的加强版

设\(h(d)=d~is~odd?d:\frac{d}{2}\),\(f(d)\)为最小周期为\(i\)的回文串
有\(g(d)=K^{\left\lceil\frac{d}{2}\right\rceil}=\sum\limits_{i|d}f(i)\)
反演一下有:\(f(n)=\sum\limits_{d|n}\mu(d)g(\frac{n}{d})\)
有:\[\begin{aligned}\\
Ans&=\sum\limits_{d|n}h(d)\sum\limits_{p|d}\mu(p)g(\frac{d}{p})\\
&=\sum\limits_{p|n}g(p)\sum\limits_{d|\frac{n}{p}}h(dp)\mu(d) \\
\end{aligned}\]

在大多数情况下有,\(h(dp)=dh(p)\)
在不满足条件:\(d~is~even,p~is~odd\)时,容易得出\(\frac{n}{p}~is~even,\sum\limits_{d|\frac{n}{p}}h(dp)\mu(d)=0\),故在不考虑这部分的情况下:\[\begin{aligned}\\
\sum\limits_{d|\frac{n}{p}}h(dp)\mu(d)&=h(p)\sum\limits_{d|\frac{n}{p}}\mu(d)d \\
&=h(p)\prod\limits_{i=1}^k (1-p_i)~~~(\frac{n}{p}=\prod\limits_{i=1}^k p_i^{deg_i})\\
\end{aligned}\]

用Pollard-Rho分解质因数然后dfs即可
\(O(Pollard-Rho(N)+\sigma_0(N)logN)\)

最新文章

  1. Filestream/Windows Share导致Alwayson Failover失败
  2. [asp.net core]project.json(1)
  3. C++11---nullptr
  4. Suricata配置文件说明
  5. 简单工厂模式(Simple Factory Pattern)
  6. android81 多线程下载和断电续传
  7. WCF入门教程[WCF基本应用]
  8. 1042. Shuffling Machine (20) - sstream实现数字转字符串
  9. [Math]Sqrt(x)
  10. Android Studio导入GitHub
  11. IE6下最小19px像素
  12. 获取Shell脚本当前的目录
  13. 用agular2做文件上传功能杂记-遁地龙卷风
  14. GMA Round 1 数列求和(Hard)
  15. centos6.5/centos7安装部署企业内部知识管理社区系统wecenter
  16. RHEL 5 , 用安装CD作为YUM的Repository
  17. 把目录C:\Python34\PCI_Code\chapter2\加到系统路径中
  18. EPD的驱动
  19. 如何表示各个时区的时间DateTime.ToString()
  20. struts常用知识

热门文章

  1. HDU 3839 Ancient Messages(DFS)
  2. CUDA学习(七)之使用CUDA内置API计时
  3. IntelliJ IDEA 2019.3 安装+永久破解[Windows]
  4. python3 控制结构知识及范例
  5. Codeforces 1249F Maximum Weight Subset (贪心)
  6. 对特殊方法的访问 - Special method lookup
  7. Generator - Python 生成器
  8. 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!
  9. 【Java并发工具类】Java并发容器
  10. pytorch之 regression