传送门

怎么说呢,一道不可多得的反演题吧,具体解释之后再补

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,b) for(int i=a;i<=b;++i)
  4. typedef long long ll;
  5. ;
  6. ll mul(ll x,ll y,ll p) {
  7. x%=p; y%=p;
  8. return (x*y-(ll)((long double)x/p*y+0.5)*p+p)%p;
  9. }
  10. ll _pow(ll x,ll n,ll p) {
  11. ll ret=;
  12. ,x=mul(x,x,p)) ) ret=mul(ret,x,p);
  13. return ret;
  14. }
  15. ll tp[]={2LL,3LL,5LL,7LL,13LL,61LL};
  16. bool MR(ll n) {
  17. ) return false;
  18. rep(i,,) if(n==tp[i]) return true;
  19. rep(i,,) ) return false;
  20. rep(i,,) {
  21. ll tmp=n-;)) tmp>>=;
  22. ll s=_pow(tp[i],tmp,n);
  23. &&s!=&&tmp!=n-) tmp<<=,s=mul(s,s,n);
  24. &&!(tmp&)) return false;
  25. }
  26. return true;
  27. }
  28. ll PR(ll n,ll c) {
  29. ll i=,k=2LL,x,y; x=y=1LL+rand()%(n-);
  30. ) {
  31. x=(mul(x,x,n)+c)%n;
  32. ll d=__gcd((y-x+n)%n,n);
  33. &&d!=n) return d;
  34. if(x==y) return n;
  35. ;
  36. }
  37. }
  38. int op[maxn],len,cnt,T;
  39. ll n,P,K,ans,gt[maxn];
  40. inline void fct(ll n) {
  41. ) return;
  42. if(MR(n)){gt[++len]=n;return;}
  43. ll p=n;
  44. ;p==n;--c) p=PR(p,c);
  45. fct(p); fct(n/p);
  46. }
  47. ll fpow(ll x,ll n,ll p) {
  48. ll ret=;
  49. ,x=x*x%p)
  50. ) ret=ret*x%p;
  51. return ret;
  52. }
  53. ll g(ll n) {,P);}
  54. ll f(ll n) {?n%P:(n>>)%P;}
  55. inline void dfs(int dp,ll d,ll pro) {
  56. ) {
  57. )&&(d&)==) return;
  58. (ans+=1LL*g(n/d)*f(n/d)%P*pro%P)%=P;
  59. return;
  60. }
  61. dfs(dp+,d,pro); pro=1LL*pro*(+P-gt[dp]%P)%P;
  62. rep(i,,op[dp]) d*=gt[dp],dfs(dp+,d,pro);
  63. }
  64. int main() {
  65. #ifndef ONLINE_JUDGE
  66. freopen("25.in","r",stdin);
  67. #endif
  68. scanf();
  69. while(T--) {
  70. scanf("%lld%lld%lld",&n,&K,&P);K%=P;
  71. len=cnt=;++cnt;
  72. memset(gt,,,sizeof(op));
  73. fct(n);
  74. sort(gt+,gt++len);
  75. rep(i,,len) {
  76. ;
  77. ++op[cnt];
  78. }
  79. ans=;dfs(,1LL,1LL);printf("%lld\n",ans);
  80. }
  81. ;
  82. }

[BZOJ 5330][SDOI2018] 反回文串的更多相关文章

  1. BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...

  2. [BZOJ5330][SDOI2018]反回文串

    luogu bzoj sol 枚举一个长度为\(n\)为回文串,它的所有循环位移都可以产生贡献. 但是这样算重了.重复的地方在于可能多个回文串循环同构,或者可能有的回文串经过小于\(n\)次循环位移后 ...

  3. [SDOI2018]反回文串

    题意 问有多少个长度为\(N\)且字符集大小为\(K\)的字符串可以通过回文串旋转 (把第一个字符移到最后)若干次得到.\(K\le N≤10^{18}\) 做法 ARC64F的加强版 设\(h(d) ...

  4. 【SDOI2018】反回文串(【ARC064 F】Rotated Palindromes 加强版)

    题意 给你一个正整数 \(n\),求有多少字符集为 \(1\) 到 \(k\) 之间整数的字符串,使得该字符串可以由一个长度为 \(n\) 的回文串循环移位得到. ARC原题 \(100\%\) 的数 ...

  5. BZOJ 3676: [Apio2014]回文串

    3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2013  Solved: 863[Submit][Status ...

  6. bzoj 3676: [Apio2014]回文串 回文自动机

    3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 844  Solved: 331[Submit][Status] ...

  7. 字符串(马拉车算法,后缀数组,稀疏表):BZOJ 3676 [Apio2014]回文串

    Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. Input 输入只有一行 ...

  8. ●BZOJ 3676 [Apio2014]回文串

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3676 题解: 后缀数组,Manacher,二分 首先有一个结论:一个串的本质不同的回文串的个 ...

  9. 「SDOI 2018」反回文串

    题目大意: 求字符集大小为$k$长度为$n$的经循环移位后为回文串的数量. 题解: 这题是D1里最神的吧 考虑一个长度为$n$回文串,将其循环移位后所有的串都是满足要求的串. 但是显然这样计算会算重. ...

随机推荐

  1. python拷贝文件小程序(windows)

    #!/usr/bin/python import os source='F:\\lh.jpg' target='E:\\' copy_command="xcopy %s %s"%( ...

  2. laravel的模型关联之(一对多的反向)

    一对多的反向 一对多的反向就相当于,一个用户有多篇文章,但是在显示文章模型的时候你又想显示这个用户的用户名,但是你只有用户id, 这时候就用到了一对多的反向,你用用户(User)模型里面定义了一对多来 ...

  3. maven学习总结-eclipse开发

    一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示:

  4. 50. Pow(x, n) 幂次方

    [抄题]: mplement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, ...

  5. Linux文件系统操作命令

    Linux文件系统操作命令 文件系统操作命令: 1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件. 2. chgrp:用来改变文件或目录所属的用户组,命令的参数以 ...

  6. while循环 for循环的理解

    不管是while循环还是for循环都隐含着一个if else的结构,就是说,if 条件满足,那么就执行循环体内部的语句,else就做循环体外部的事情. 有一个例子我觉得特别典型,程序内部定义了一个特定 ...

  7. R语言读取MySQL数据表

    1.R中安装RODBC包 install.packages("RODBC") 2.在Windows系统下安装MySQL的ODBC驱动 注意区分32位和64位版本: http://d ...

  8. rpm遇到的坑-与VMP冲突

    rpm遇到的坑-与VMP冲突 摘自:https://blog.csdn.net/shijichao2/article/details/78797586 2017年12月13日 22:29:21 阅读数 ...

  9. 《the art of software testing》第四章 测试用例的设计

    白盒测试 逻辑覆盖测试: 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术.它属白盒测试.白盒测试的测试方法有代码检查法.静态结构分析法.静态质量度量法.逻辑覆盖法.基本路径测试法.域测试.符 ...

  10. java IO Nio 文件拷贝工具类Files

    public static void main(String[] args) throws Exception { Files.copy(Paths.get("file/text.txt&q ...