【BZOJ1951】[Sdoi2010]古代猪文 Lucas定理+CRT
【BZOJ1951】[Sdoi2010]古代猪文
Description
Input
Output
Sample Input
Sample Output
HINT
10%的数据中,1 <= N <= 50;
20%的数据中,1 <= N <= 1000;
40%的数据中,1 <= N <= 100000;
100%的数据中,1 <= G <= 1000000000,1 <= N <= 1000000000。
题解:由于n很小,可以暴力枚举约数并用Lucas定理计算$C_n^d$的值。但是最后求的是$G^X%P$,所以X要对P-1取模,然而P-1不是质数,所以先分解质因数然后用CRT合并即可。
注意:G=P时费马小定理不成立。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
ll n,m,G,P,ans;
ll v[100000],jc[100000],jcc[100000],ine[100000],A[10];
ll lucas(ll a,ll b)
{
if(a<b) return 0;
if(!b) return 1;
if(a<P) return jc[a]*jcc[a-b]%P*jcc[b]%P;
return lucas(a%P,b%P)*lucas(a/P,b/P)%P;
}
ll calc()
{
ll ret=0;
jc[0]=jcc[0]=ine[0]=jc[1]=jcc[1]=ine[1]=1;
int i;
for(i=2;i<P;i++) jc[i]=jc[i-1]*i%P,ine[i]=P-(P/i)*ine[P%i]%P,jcc[i]=jcc[i-1]*ine[i]%P;
for(i=1;i<=m;i++) ret=(ret+lucas(n,v[i]))%P;
return ret;
}
inline ll pm(ll x,ll y,ll mod)
{
ll z=1;
while(y)
{
if(y&1) z=z*x%mod;
x=x*x%mod,y>>=1;
}
return z;
}
inline ll work(ll a,ll b,ll c)
{
return (c*pm(a,b-2,b)%b+b)%b;
}
int main()
{
scanf("%lld%lld",&n,&G);
if(G==999911659)
{
printf("0");
return 0;
}
ll i;
for(i=1;i*i<n;i++) if(n%i==0) v[++m]=i,v[++m]=n/i;
if(i*i==n) v[++m]=i;
P=2,A[1]=calc();
P=3,A[2]=calc();
P=4679,A[3]=calc();
P=35617,A[4]=calc();
P=999911658;
ans=(ans+P/2*work(P/2,2,A[1]))%P;
ans=(ans+P/3*work(P/3,3,A[2]))%P;
ans=(ans+P/4679*work(P/4679,4679,A[3]))%P;
ans=(ans+P/35617*work(P/35617,35617,A[4]))%P;
printf("%lld",pm(G,(ans+P)%P,P+1));
return 0;
}
【BZOJ1951】[Sdoi2010]古代猪文 Lucas定理+CRT的更多相关文章
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- BZOJ1951:[SDOI2010]古代猪文(Lucas,CRT)
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理
P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】
题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...
- P2480 [SDOI2010]古代猪文 Lucas+CRT合并
\(\color{#0066ff}{ 题目描述 }\) 猪王国的文明源远流长,博大精深. iPig在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为N.当然,一种语言如果字数很多,字典也相应会 ...
- BZOJ1951 [Sdoi2010]古代猪文 中国剩余定理 快速幂 数论
原文链接http://www.cnblogs.com/zhouzhendong/p/8109156.html 题目传送门 - BZOJ1951 题意概括 求 GM mod 999911659 M=∑i ...
- BZOJ1951[SDOI2010]古代猪文
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
随机推荐
- String、StringBuilder、StringBuffer对比
参考:http://swiftlet.net/archives/1694 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.htm ...
- 顶部有一排按钮,最底下还有FooterView的ListView页面
Android 先上效果图: 下面详细说说这个页面是怎么做出来的: 1.这个页面最下方可以看到一个TAB页签,分别是“主页”.“提及”等等,这个是一个在底部的TAB分页样式,在上一篇博客中已经介绍了 ...
- 盘点SEO和SEM的优劣势
如果你不知如何分配你的搜索营销预算,或是和客户提案的时候不知道怎么样去解释搜索营销产品(SEO和SEM)的区别,又或者不了解网站/企业在当前阶段应该优先施行哪种搜索营销策略,本文可以帮助你深入了解SE ...
- Rabbitmq消息队列(四) 发布订阅
1.简介 在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者,在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers).这种模式被称为“发布/订阅” ...
- ClientViaBehavior行为
ClientViaBehavior行为: 紧接红框:方式,也支持配置的应用方式
- MVVMLight
MVVMLight源码分析之消息机制和ViewModelBase http://www.cnblogs.com/facingwaller/archive/2010/11/06/1870608.html ...
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
Atitit.模板引擎原理以及常见模板技术 1. Asp Php jsp smarty模板1 1.1. 模板引擎基本原理1 1.2. 调试模式原理2 2. Attilax总结的模板引擎原理2 3. 支 ...
- 关于UNIX/Linux下安装《UNIX环境高级编程》源代码的问题
<UNIX环境高级编程(第三版)>是一本广为人知的unix系统编程书籍. 但是,书中的代码示例,要想正确的编译运行,要先做好准备工作: 1.下载源代码 传送门:http://apueboo ...
- windows编译tensorflow c++库
1. 准备 windows 10系统.3.6GHz cpu.16G 内存 visual studio 2017 or 2015 下载安装git 下载安装cmake 下载安装swigwin 如果不需要p ...
- layui的单选框
<script type="text/html" id="radioTpl"> <input type="radio" n ...