【题意】给定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 ;
}

【BZOJ】1951[Sdoi2010]古代猪文的更多相关文章

  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. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]

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

  3. 【刷题】BZOJ 1951 [Sdoi2010]古代猪文

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

  4. bzoj 1951 [Sdoi2010]古代猪文(数论知识)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...

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

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

  6. bzoj 1951: [Sdoi2010]古代猪文

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

  7. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

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

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

  9. BZOJ 1951 [SDOI2010]古代猪文 (组合数学+欧拉降幂+中国剩余定理)

    题目大意:求$G^{\sum_{m|n} C_{n}^{m}}\;mod\;999911659\;$的值$(n,g<=10^{9})$ 并没有想到欧拉定理.. 999911659是一个质数,所以 ...

  10. BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas

    欧拉定理不要忘记!! #include <bits/stdc++.h> #define N 100000 #define ll long long #define ull unsigned ...

随机推荐

  1. 基于图形学混色问题OpenGl的收获

    void myDisplay(void) {glClearColor(0.0f,0.0f,0.0f,1.0f); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_B ...

  2. 2nd 燃尽图

    燃尽图(burn down chart) 在项目完成之前,对需要完成的工作所作的一种可视化表示.燃尽图主要用于向项目组成员和用户提供一个工作进展的公共视图,用以描述项目的实现状态.一般来说,常常用于形 ...

  3. jenkin重新注册用户

    http://www.cnblogs.com/xiao-fy/

  4. Android手机Fiddler真机抓包

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许用户监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统 ...

  5. 出现脚本错误或者未正确调用 Page()

    pages/xxxx/xxxx.js 出现脚本错误或者未正确调用 Page() 自己创建的小程序出现上面报错,可能是因为 xxxx.js是一个空文件,所以才会出现未正确调用: 如果是空文件的话,解决办 ...

  6. HDU5669-Road

    题意 给一个\(n\)个点的图,标号为\(1\)到\(n\),进行\(m\)次连边\((a,b,c,d,w)\): for i in range[a,b]: for j in range[c,d]: ...

  7. 【Java】自动获取某表某列的最大ID数

    使用场景: 当需要往数据库插入数据时,表的主键需要接着已经有的数据后面进行自增.比如已经wq_customer表里,主键为TBL_ID,如果是空表,那么插入的数据TBL_ID设置为1,如果已经有n条数 ...

  8. DP——P2300 合并神犇

    题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不齐非常难受.于是loi ...

  9. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

    2016年伊始,有了VR虚拟现实硬件设备:  暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的O ...

  10. PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】

    一:Mcrypt简介 Mcrypt是PHP的一个扩展,完成了常用加密算法的封装.其实该扩展是对mcrypt标准类库的封装,mcrypt完成了相当多的常用加密算法,如DES, TripleDES, Bl ...