【题意】给定G,N,求:

$$ans=G^{\sum_{i|n}\binom{n}{i}}\ \mod\ \ p$$

1<=N,G<=10^9,p=999911659。

【算法】欧拉定理+组合数取模(lucas)+中国剩余定理(CRT)

【题解】

先考虑简化幂运算,因为模数为素数,由欧拉定理可知G^k=G^(k%φ(p)) mod p,显然G^(k%φ(p)) mod p可以用快速幂求解

但是欧拉定理要求(G,p)=1,当G=p时不满足条件,可以特判答案为0或者用扩展欧拉定理(b%φ(p)+(b>=φ(p)?φ(p):0))。

故我们实际要求:

$$\sum_{i|n}\binom{n}{i}\ \mod\ \ (p-1)$$

因为p是素数,φ(p)=p-1=999911658=2*3*4679*35617。

因为p-1分解后无平方因子,所以直接用lucas分别对素模数计算后用中国剩余定理合并即可(若有则需要参考bzoj礼物的方法——扩展lucas)

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,MOD=;//999911658=2*3*4679*35617
const int p[]={,,,,};
ll a[],fac[][maxn],n,G;
ll power(ll x,ll k,ll p)
{
if(x==)return ;
ll ans=;//快速幂ans=1!
while(k>)
{
if(k&)ans=(ans*x)%p;//满足1时才累乘
x=(x*x)%p;
k>>=;
}
return ans;
}
ll C(ll n,ll m,ll k)
{
if(n<m)return ;
return fac[k][n]*power(fac[k][m],p[k]-,p[k])%p[k]*power(fac[k][n-m],p[k]-,p[k])%p[k];//n!/m!/(n-m)!
}
ll lucas(ll n,ll m,ll k)
{
if(n<m)return ;
if(n<p[k]&&m<p[k])return C(n,m,k);
return C(n%p[k],m%p[k],k)*lucas(n/p[k],m/p[k],k)%p[k];
}
int main()
{
scanf("%lld%lld",&n,&G);
if(G==MOD)
{
printf("");
return ;
}
for(int k=;k<=;k++)
{
fac[k][]=;
for(int i=;i<p[k];i++)fac[k][i]=fac[k][i-]*i%p[k];//随时记得取模
}
for(int i=;i*i<=n;i++)if(n%i==)
{
int j=n/i;
for(int k=;k<=;k++)
{
a[k]=(a[k]+lucas(n,i,k))%p[k];
if(i!=j)a[k]=(a[k]+lucas(n,j,k))%p[k];
}
}
ll M=MOD-;
ll ans=;
for(int k=;k<=;k++)ans=(ans+a[k]*M/p[k]*power(M/p[k],p[k]-,p[k]))%M;
printf("%lld",power(G,ans,MOD));
return ;
}

最新文章

  1. log4j:WARN Please initialize the log4j system properly 问题解决
  2. 华硕笔记本U盘启动系统/WinPE报错。Windows failed to start. A Recent hardware or software change might be the cause.
  3. MySQL字符集的修改和查看
  4. win下搭建uvm环境
  5. select multiple images in Android Gallery
  6. Altium Designer规则
  7. idea git 注意事项
  8. iOS进阶面试题----经典10道
  9. 简单DP-艰难取舍
  10. php源码分析之PHPAPI宏的作用
  11. haproxy+tomcat集群搭建
  12. 我在Windows下的第一个Shellcode
  13. Ajax 跨域,这应该是最全的解决方案了
  14. java的参数传递与内存分配问题
  15. 为什么我们要使用ssh框架技术,及感想
  16. SSM-MyBatis-06:Mybatis中openSession到底做了什么
  17. Java核心技术第八章——泛型程序设计(1)
  18. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
  19. c++ 11 移动语义
  20. nexus的安装和简介(3)

热门文章

  1. Alpha-6
  2. lintcode-464-整数排序 II
  3. Iterable,Iterator和forEach
  4. php判断是否https
  5. Android内存泄漏第二课--------(集合中对象没清理造成的内存泄漏 )
  6. 第184天:js创建对象的几种方式总结
  7. BZOJ 2118 墨墨的等式(最短路)
  8. [BZOJ4553][HEOI2016]序列 CDQ分治
  9. MySQL主键和外键使用及说明
  10. 【数论】数论进阶-Preknowledge