BZOJ 1951SDOI2010 古代猪文
真是到很强的数学题
先利用欧拉定理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 古代猪文的更多相关文章
- BZOJ 1951 古代猪文
快速幂+枚举质因数+欧拉定理+lucas定理+CRT. 注意两点: 1.if (n<m) C(n,m)=0. 2.这里0^0时应该return 0. #include<iostream&g ...
- 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 ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- BZOJ 1951 【SDOI2010】 古代猪文
题目链接:古代猪文 好久没写博客了,这次就先写一篇吧…… 题面好鬼……概括起来就是:给出\(N,G(\leqslant 10^9)\),求:\[G^{\sum_{d|n}\binom{n}{d}} \ ...
- 古代猪文 BZOJ 1951
古代猪文 [问题描述] “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 【BZOJ1951】[SDOI2010]古代猪文
[BZOJ1951][SDOI2010]古代猪文 题面 bzoj 洛谷 题解 题目实际上是要求 $ G^{\sum d|n\;C_n^d}\;mod \; 999911659 $ 而这个奇怪的模数实际 ...
- 【BZOJ1951】古代猪文(CRT,卢卡斯定理)
[BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- 1951: [Sdoi2010]古代猪文
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2171 Solved: 904[Submit][Status] ...
随机推荐
- [译] 用HTML5捕获音频和视频
原文地址:http://www.html5rocks.com/en/tutorials/getusermedia/intro/ 概述 有了HTML5,我们就可以在不借助Flash或者Silverlig ...
- beego项目运行过程
一:首先man.go,整个程序的入口 func main() { beego.Run() } 然后beego.run()代码 // Run beego application. // beego.Ru ...
- 2016.5.19——Excel Sheet Column Title
Excel Sheet Column Title 本题收获: 1.由int型转换为整型(string),如何转化, res = 'A'+(n-1)%26和之前由A-z转化为十进制相反,res = s[ ...
- 【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)
没有参加,但是之后几天打了哦,第三场AK的CF比赛. CF大扫荡计划正在稳步进行. [A]Olympiad 题意: 给\(n\)个人颁奖,要满足: 至少有一个人拿奖. 如果得分为\(x\)的有奖,那么 ...
- nginx配置浅析
一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...
- SPI子系统分析之二:数据结构【转】
转自:http://www.cnblogs.com/jason-lu/articles/3164901.html 内核版本:3.9.5 spi_master struct spi_master用来描述 ...
- Linux多线程的使用一:互斥锁
多线程经常会在Linux的开发中用到,我想把平时的使用和思考记录下来,一是给自己做个备忘,二是分享给可能会用到的人. POSIX标准下互斥锁是pthread_mutex_t,与之相关的函数有: 1 i ...
- Python爬取微信好友
前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 来源: 痴海 链接: https://mp.weixin.qq.com/ ...
- java基础70 负责静态的网页制作语言XML(网页知识)
HTML:负责网页结构的CSS:负责网页的样式(美观)JavaScript:负责客户(浏览器)端与用户进行交互 1.HTML语言的特点 1.由标签组成 2.语法结构松散 3.大小写不区分 ...
- ZooKeeper常见问题
转载自原文:zookeeper(二)常见问题汇总 一.为什么zookeeper要部署基数台服务器? 所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个 ...