真是到很强的数学题

先利用欧拉定理A^B %p=A^(B%φ(p)+φ(p) ) %p

然后利用卢卡斯定理求出在modφ(p)的几个约数下的解

再利用中国剩余定理合并

计算答案即可

By:大奕哥

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=;
ll pri[]={,,,};
ll fac[][],inv[][],ans[],n,g;
void init(ll p,ll fac[],ll inv[])
{
fac[]=;
for(int i=;i<=p;++i)fac[i]=fac[i-]*i%p;
inv[]=inv[]=;
for(int i=;i<=p;++i)inv[i]=(p/i+)*inv[i-p%i]%p;
for(int i=;i<=p;++i)inv[i]=inv[i]*inv[i-]%p;
}
ll C(ll a,ll b,ll p,ll fac[],ll inv[])
{
if(a<b)return ;
if(a<p&&b<p)return fac[a]*inv[b]%p*inv[a-b]%p;
return C(a/p,b/p,p,fac,inv)*C(a%p,b%p,p,fac,inv)%p;
}
void exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){
x=;y=;return;
}
exgcd(b,a%b,x,y);
ll t=x;x=y;y=t-a/b*y;
}
ll CRT()
{
ll sum=;
for(int i=;i<;++i)
{
ll x,y;
exgcd((mod-)/pri[i],pri[i],x,y);
sum+=ans[i]*((mod-)/pri[i])%(mod-)*x%(mod-);
sum%=(mod-);
}
return sum;
}
void cal(ll x)
{
for(int i=;i<;++i)
{
ans[i]+=C(n,x,pri[i],fac[i],inv[i]);
ans[i]%=pri[i];
}
return;
} ll qmod(ll a,ll b)
{
ll ans=;
while(b)
{
if(b&)ans=ans*a%mod;
a=a*a%mod;b>>=;
}
return ans;
}
int main()
{
for(int i=;i<;++i)init(pri[i],fac[i],inv[i]);
scanf("%d%d",&n,&g);
for(int i=;i*i<=n;++i)
{
if(i*i==n)cal(i);
else if(n%i==)cal(i),cal(n/i);
} ll ans=CRT();
ans=qmod(g%mod,ans+mod-);
printf("%lld\n",ans);
return ;
}

BZOJ 1951SDOI2010 古代猪文的更多相关文章

  1. BZOJ 1951 古代猪文

    快速幂+枚举质因数+欧拉定理+lucas定理+CRT. 注意两点: 1.if (n<m) C(n,m)=0. 2.这里0^0时应该return 0. #include<iostream&g ...

  2. 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 ...

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

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

  4. BZOJ 1951 【SDOI2010】 古代猪文

    题目链接:古代猪文 好久没写博客了,这次就先写一篇吧…… 题面好鬼……概括起来就是:给出\(N,G(\leqslant 10^9)\),求:\[G^{\sum_{d|n}\binom{n}{d}} \ ...

  5. 古代猪文 BZOJ 1951

    古代猪文 [问题描述] “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  6. 【BZOJ1951】[SDOI2010]古代猪文

    [BZOJ1951][SDOI2010]古代猪文 题面 bzoj 洛谷 题解 题目实际上是要求 $ G^{\sum d|n\;C_n^d}\;mod \; 999911659 $ 而这个奇怪的模数实际 ...

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

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

  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. Linux 内核驱动--多点触摸接口【转】

    转自:http://blog.csdn.net/joard_yang/article/details/6225937 译自:linux-2.6.31.14/Documentation/input/mu ...

  2. C# WebClient进行FTP服务上传文件和下载文件

    定义WebClient使用的操作类: 操作类名称WebUpDown WebClient上传文件至Ftp服务: //// <summary> /// WebClient上传文件至Ftp服务 ...

  3. Dropout caffe源码

    GPU和CPU实现的不一样,这里贴的是CPU中的drop out 直接看caffe里面的源码吧:(产生满足伯努利分布的随机数mask,train的时候,data除以p,...... scale_ = ...

  4. ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案

    .Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...

  5. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  6. 如何在VS2013创建WebService并在IIS中发布

    第一步:打开VS2013,选择文件->新建->项目. 第二步:选择[ASP.net 空web应用程序],将其命名为自己想的工程名称. 第三步:然后右键点击工程,添加->web服务.然 ...

  7. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  8. python2.7

    python2.7支持win32.win64 下载地址:http://pan.baidu.com/s/1dE39eQ9 初学,附一个牛人的python教程地址:http://www.liaoxuefe ...

  9. Java MongoDB : Save image example

    In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS API ...

  10. Docker网络和存储

    本节内容: Docker网络访问 端口映射 数据管理 一.Docker网络访问 1. docker自带的网络 docker network ls:列出当前docker中已有的网络 docker net ...