1. /*
  2. 古代猪文:Lucas定理+中国剩余定理
  3. 999911658=2*3*4679*35617
  4. Lucas定理:(m,n)=(sp,tp)(r,q) %p
  5. 中国剩余定理:x=sum{si*Mi*ti}+km
  6. 先求出sum{C(d,n)}%p[i]=a[i]
  7. */
  8. #include<bits/stdc++.h>
  9. using namespace std;
  10. #define ll long long
  11. #define mod 999911659
  12. #define maxn 100005
  13. ll m[]={,,,};
  14. ll f[][maxn],a[],d[maxn];
  15. ll exgcd(ll a,ll b,ll &x,ll &y){
  16. if(b==){x=,y=;return a;}
  17. ll d=exgcd(b,a%b,x,y);
  18. ll z=x;x=y,y=z-a/b*y;
  19. return d;
  20. }
  21. ll inv(ll a,ll Mod){
  22. ll x,y;
  23. exgcd(a,Mod,x,y);
  24. return (x+Mod)%Mod;
  25. }
  26. ll C(int i,ll n,ll k,ll p){return f[i][n]*inv(f[i][k]*f[i][n-k]%p,p)%p;}
  27. ll lucas(int i,ll n,ll k,ll p){
  28. int res=;
  29. while(n&&k){
  30. res=res*C(i,n%p,k%p,p)%p;
  31. if(res==)return ;
  32. n/=p,k/=p;
  33. }
  34. return res;
  35. }
  36. ll Pow(ll x,ll n,ll Mod){
  37. ll res=;
  38. while(n){
  39. if(n%)res=res*x%Mod;
  40. n>>=;x=x*x%Mod;
  41. }
  42. return res;
  43. }
  44. ll china(int n,ll a[],ll m[]){
  45. ll M=,res=;
  46. for(int i=;i<n;i++)M*=m[i];
  47. for(int i=;i<n;i++){
  48. ll w=M/m[i],x,y;
  49. exgcd(w,m[i],x,y);
  50. res=(res+x*w*a[i])%M;
  51. }
  52. return (res+M)%M;
  53. }
  54.  
  55. int main(){
  56. ll n,g;
  57. cin>>n>>g;
  58. if(g==mod){puts("");return ;}
  59. int tot=;
  60. for(int i=;i*i<=n;i++)
  61. if(n%i==){//求n的所有质因子
  62. if(i*i==n)d[tot++]=i;
  63. else d[tot++]=i,d[tot++]=n/i;
  64. }
  65. for(int i=;i<;i++){
  66. f[i][]=;
  67. for(int j=;j<m[i];j++)
  68. f[i][j]=f[i][j-]*j%m[i];
  69. }
  70. for(int i=;i<tot;i++)
  71. for(int j=;j<;j++)
  72. a[j]=(a[j]+lucas(j,n,d[i],m[j]))%m[j];;
  73. ll ans=china(,a,m);
  74. cout<<Pow(g,ans,mod);
  75. }

古代猪文:数论大集合:欧拉定理,exgcd,china,逆元,Lucas定理应用的更多相关文章

  1. BZOJ 1951: [Sdoi2010]古代猪文( 数论 )

    显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...

  2. 【bzoj1951】: [Sdoi2010]古代猪文 数论-中国剩余定理-Lucas定理

    [bzoj1951]: [Sdoi2010]古代猪文 因为999911659是个素数 欧拉定理得 然后指数上中国剩余定理 然后分别lucas定理就好了 注意G==P的时候的特判 /* http://w ...

  3. luogu 2480 古代猪文 数论合集(CRT+Lucas+qpow+逆元)

    一句话题意:G 的 sigma d|n  C(n d) 次幂  mod 999911659 (我好辣鸡呀还是不会mathjax) 分析: 1.利用欧拉定理简化模运算 ,将上方幂设为x,则x=原式mod ...

  4. bzoj 1951: [Sdoi2010]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】

    首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...

  5. bzoj1951 [Sdoi2010]古代猪文 ——数论综合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...

  6. P2480 [SDOI2010]古代猪文

    P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...

  7. BZOJ1951 古代猪文 【数论全家桶】

    BZOJ1951 古代猪文 题目链接: 题意: 计算\(g^{\sum_{k|n}(^n_k)}\%999911659\) \(n\le 10^9, g\le 10^9\) 题解: 首先,根据扩展欧拉 ...

  8. BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)

    数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...

  9. 1951: [Sdoi2010]古代猪文

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2171  Solved: 904[Submit][Status] ...

随机推荐

  1. Python 9 进程,线程

    本节内容 python GIL全局解释器锁 线程 进程 Python GIL(Global Interpreter Lock) In CPython, the global interpreter l ...

  2. whatis命令,一个非常有用的命令

    比如我不知道yum的配置文件yum.conf怎么用,就可以whatis yum.conf,

  3. python,小练习(计算两点之间直线长度)

    #首先引入数学函数 import math #创建一个点的类 class Point(): #初始化点的坐标(x,y) def __init__(self,x=0,y=0): self.x = x s ...

  4. 使用服务器参数文件(SPFILE)管理初始化参数

    传统上,Oracle数据库的初始化参数存储在文本初始化参数文件中.为了更好的可管理性,您可以选择在二进制服务器参数文件中维护初始化参数,该文件在数据库启动和关闭期间保持不变.本节介绍服务器参数文件,并 ...

  5. dubbo源码分析4——SPI机制_ExtensionFactory类的作用

    ExtensionFactory的源码: @SPI public interface ExtensionFactory { /** * Get extension. * * @param type o ...

  6. MySQL之路 ——1、安装跳坑

    最近几天准备写一个JavaWeb的简单登录,注册试下手:所谓”工欲善其事必先利其器“,然后数据库方面的话,考虑用MySQL.在安装MySQL过程中,碰到了一些问题(大同小异),记录在此,诸君共勉. 1 ...

  7. c++不定参数函数

    不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多.除了格式化输出之外,我实在没看到多少应用.主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替 ...

  8. 四重解法---P1047 校门外的树

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,--,L,都种 ...

  9. CSRFGuard工具介绍

    理解CSRFGuard的基础:http://www.runoob.com/jsp/jsp-tutorial.html 1:您需要做的第一件事是将OWASP.CSRFARGAD.JAR库复制到类路径中. ...

  10. mysql 定时备份bat脚本 ,方便小型服务简单快速备份mysql

    mysql定时备份bat脚本 echo 数据库为用户名为root 密码为root 数据库名为kdykt echo mysqldump 命令如果没有配置环境变量要在bin目录下执行 set " ...