传送门
写在前面:写的最艰辛的一道数论
思路:
1.对于a^x mod p(其中p是质数),由x=0,1,2..p-1,一定可以构成循环节,所以我们可以把它变为a^(x mod (p-1)),求出x mod (p-1)使用快速幂
2.对于p-1=999911659=2×3×4679×35617,所以我们可以将x mod (p-1)分解成一元线性同余方程组,最后使用中国剩余定理合并。
3.对于x=C(i,n)(i是n的约数),p为质数(注意,这里的p为第二步分解出的质因数),我们可以使用Lucas定理有C(i,n)mod p=C(i/p,n/p)×C(i%p,n%p) mod p,对于C(i/p,n/p)可以递归至其中一个为0,C(i%p,n%p)则可以通过预处理直接得出n!/(n-i)!/i!,但注意的是由于取模p,我们对于C(i%p,n%p)计算时应当是n!×inv((n-i)!*i!),inv是关于p的乘法逆元,对于这个逆元我们可以用费马小定理求出,即为((n-i)!×i!)^-2
4.关于一些具体求法,详见代码
代码:

#include<bits/stdc++.h>
#define LL long long
#define mod 999911659
using namespace std;
LL n,g,e;
LL prime[5]={0,2,3,4679,35617},fac[35618]={1},ans[5],M[5]={0,499955829,333303886,213702,28074};
//prime为分解的质因数,fac为阶乘,ans为对于每一个质因数得出的sigma(C(i,n)),M[i]为除了ni以外的n-1个整数的乘积。
LL qr(LL x,LL y,LL z)
{LL ans=1;x%=z;while (y){if (y&1) ans=ans*x%z;x=x*x%z;y>>=1;}return ans;
}
LL lucas(LL p,LL q,LL num)
{LL sum=1;while (p&&q){LL x=p%prime[num],y=q%prime[num];if (y>x) return 0;sum=(sum*(fac[x]*qr(fac[y]*fac[x-y],prime[num]-2,prime[num]))%prime[num])%prime[num];p/=prime[num];q/=prime[num];}return sum;
}
void exgcd(LL &x,LL &y,LL a,LL b)
{if (!b) {x=1;y=0;return;}exgcd(x,y,b,a%b);int x1=y,y1=x-a/b*y;x=x1;y=y1;
}
main()
{scanf("%lld%lld",&n,&g);for (LL i=1;i<=4;i++){for (LL j=1;j<=prime[i];j++)fac[j]=fac[j-1]*j%prime[i];//预处理阶乘for (LL j=1;j<=sqrt(n);j++)if (n%j==0){ans[i]=(ans[i]+lucas(n,j,i))%prime[i];if (j*j<n) ans[i]=(ans[i]+lucas(n,n/j,i))%prime[i];}}//通过lucas求出组合数累加和,构建同余方程组for(LL i=1;i<=4;i++){LL x,y;exgcd(x,y,M[i],prime[i]);//求出逆元,即tie=(e+ans[i]*x*M[i])%(mod-1);}while (e<=0) e+=(mod-1);//这步很关键,而且不能是<,必须是<=.因为g是mod的倍数的时候,g^x%mod一定是0,但是当e=0就不加的话,就是g^0%mod=1了printf("%lld\n",qr(g,e,mod));
}

【codevs1830】【BZOJ1951】古代猪文,数论综合相关推荐

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

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

  2. P2480 [SDOI2010]古代猪文(数论好题)

    P2480 [SDOI2010]古代猪文 题意: 给你n和g,求g∑d∣nCndmodpg^{\sum_{d|n}C_{n}^{d}}\bmod pg∑d∣n​Cnd​modp p=999911659 ...

  3. bzoj 1951 [Sdoi2010]古代猪文 ——数学综合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...

  4. 【BZOJ1951】古代猪文(CRT,卢卡斯定理)

    [BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...

  5. P2480 [SDOI2010]古代猪文

    P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...

  6. 1951: [Sdoi2010]古代猪文

    http://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意:求G^(C(N,N/K))%mod ( K|N) 1951: [Sdoi2010]古代猪 ...

  7. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 2194  Solved: 919 [Submit][Statu ...

  8. 【SDOI2010】古代猪文

    [SDOI2010]古代猪文 Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--&quo ...

  9. BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】...

    题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...

  10. bzoj1951 [Sdoi2010]古代猪文

    http://www.elijahqi.win/archives/3185 Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿 ...

最新文章

  1. 字符串字符数组和基本类型的相互转换
  2. 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
  3. gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js
  4. java excel 操作方式_Java读写Excel基本操作
  5. Golang make chan 第二个参数(size)
  6. Apache Shiro SessionManager配置详解.
  7. 拥抱开源四年的 .NET,现在怎么样了?
  8. 潘多拉_最新Pandora潘多拉美国官网海淘攻略
  9. 行业大佬集体唱衰教育O2O,强管控的B2C模式将是唯一出路
  10. 4.2 文本特征抽取的两种方式CountVectorizer与TfidfVectorizer
  11. SQLServer2019安装教程
  12. 千月影视APP前端搭建_①_注册apicloud账号密码
  13. spring nature
  14. 简述WebS简述WebService与.NET Remoting的区别及适应场合
  15. Arduino基础入门篇25—红外遥控
  16. C++异常类型以及多级catch匹配
  17. chrome android远程调试工作原理
  18. GRU(Gate Recurrent Unit,门控循环单元)结构
  19. SPM空间金字塔模型
  20. python根据url获得m3u8_python爬取m3u8连接的视频

热门文章

  1. 用Anaconda3搭建自己的TensorFlow环境
  2. 一统江湖的大前端(3) DOClever——你的Postman有点Low
  3. 【华为大咖分享】9.2018加速度,洞悉DevOps高效能组织的秘密(后附PPT下载地址)
  4. 大数据好还是不好_学python好还是大数据好?想学IT,但有点搞不清方向的人可以看看...
  5. 红橙Darren视频笔记 旋转加载界面
  6. 被word格式折磨疯掉的我
  7. 安卓手机上用termux编译TeX文档并生成PDF
  8. Linux安装Bitbucket7.6.0教程-绝对干货满满
  9. mac securecrt程序无响应_Adobe庆祝Photoshop问世30周年 为Mac和iPad版本提供新功能
  10. Date类 和 Calendar类