洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
好吧我数学差的好像不是一点半点……
题目求的是$G^{\sum_{d|n}C^d_n}mod\ 999911659$
我们可以利用费马小定理$a^{k}\equiv a^{k\ mod\ (p-1)}(mod\ p)$
然后组合数可以直接用Lucas搞
那么就做完啦
然而$p-1$并不是质数orz,费马小定理不能用
那么我们考虑把$p-1$分解质数,$999911658=2*3*4679*35617$
我们先用Lucas定理分别算出对这四个数取模的答案,然后得到四个线性同余方程
然后直接用中国剩余定理解出答案就好了(然而我并不会中国剩余定理orz)
//minamoto
#include<cstdio>
#define ll long long
using namespace std;
const int mod=;
ll n,G,val,fac[],a[],b[]={,,,};
inline ll ksm(ll x,ll y,ll p){
ll res=;
while(y){
if(y&) res=res*x%p;
x=x*x%p,y>>=;
}
return res;
}
inline void init(ll p){
fac[]=;
for(int i=;i<=p;++i)
fac[i]=fac[i-]*i%p;
}
inline ll C(ll n,ll m,ll p){
if(n<m) return ;
return fac[n]*ksm(fac[m],p-,p)%p*ksm(fac[n-m],p-,p)%p;
}
ll Lucas(ll n,ll m,ll p){
if(n<m) return ;if(!n) return ;
return Lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
}
inline void CRT(){
for(int i=;i<;++i)
val=(val+a[i]*(mod/b[i])%mod*ksm(mod/b[i],b[i]-,b[i]))%mod;
}
int main(){
scanf("%lld%lld",&n,&G);
if(G%(mod+)==) return puts(""),;
for(int k=;k<;++k){
init(b[k]);
for(ll i=;i*i<=n;++i)
if(n%i==){
a[k]=(a[k]+Lucas(n,i,b[k]))%b[k];
if(i*i!=n) a[k]=(a[k]+Lucas(n,n/i,b[k]))%b[k];
}
}
CRT();
printf("%lld\n",ksm(G,val,mod+));
return ;
}
洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)的更多相关文章
- 洛谷 P2480 [SDOI2010]古代猪文 解题报告
P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...
- 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理
P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- 洛谷 P2480 [SDOI2010]古代猪文 题解【欧拉定理】【CRT】【Lucas定理】
数论综合题. 题目背景 题目背景与题目无关因此省略.题目链接 题目描述 猪王国的文明源远流长,博大精深. iPig 在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为 \(N\).当然,一种语 ...
- 洛谷P2480 [SDOI2010]古代猪文
要求(图是盗来的QAQ) 首先用欧拉定理把幂模一下,直接就是MOD-1了 然后发现MOD-1可以分解为2,3,4679,35617,都是质数,可以直接用Lucas定理 然后用中国剩余定理合并一下即可 ...
- 洛咕 P2480 [SDOI2010]古代猪文
洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...
- 【洛谷P2480】古代猪文
题目大意:求 \[ G^{\sum\limits_{d|N}\binom{n}{k}} mod\ \ 999911659 \] 题解:卢卡斯定理+中国剩余定理 利用卢卡斯定理求出指数和式对各个素模数的 ...
- [SDOI2010] 古代猪文 (快速幂+中国剩余定理+欧拉定理+卢卡斯定理) 解题报告
题目链接:https://www.luogu.org/problemnew/show/P2480 题目背景 “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色 ...
随机推荐
- EasyDarwin开源流媒体服务器将select改为epoll的方法
本文来自EasyDarwin团队Fantasy(fantasy(at)easydarwin.org) 一. EasyDarwin网络模型介绍 EventContext负责监听所有网络读写事件,Even ...
- go echo studygolang ___go_build_myT_go__1_.exe
https://github.com/studygolang/studygolang [stat]; 用户在线数据存到哪里:redis -> 表示存入 redis,这样支持多机部署; onlin ...
- TTimer很特殊
TTimer = class(TComponent) private FInterval: Cardinal; FWindowHandle: HWND; FOnTimer: TNotifyEvent; ...
- 2.alert() 函数
①alert() 函数在 JavaScript 中并不常用,但它对于代码测试非常方便. <!DOCTYPE html><html><body> <h1> ...
- 20170316 ABAP注意点
1.debug 时在MODIFY db from table 后数据便提交了: 一般情况下,更新数据库需要commit,但debug会自动commit,程序结束也会自动commit. 2.使用at n ...
- sap人员编制
[转]中小SAP项目中的人员编制 转自http://w39.itpub.net/post/24/398817 对于SAP项目来说,常有人把项目所需的人员说的很多--每个模块一个内部顾问和一个开发的 ...
- PySpider安装与使用(Windows系统下)
PySpider Begin 安装pip install pyspider 在windows系统好像会出现如下问题 Command "python setup.py egg_info&quo ...
- 'gbk' codec can't encode character '\xa5' in position 4546: illegal multibyte sequence错误解决
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') 原文 http://blog.csdn.net/jim7424 ...
- RobotFramework教程使用笔记——初识RobotFramework
1.创建项目 File->New Project 创建测试项目 Type选择Directory 右键项目创建测试套件,也可以理解为创建不同测试逻辑或者是测试业务 右键测试套件创建case 注:如 ...
- H264视频通过RTMP直播
http://blog.csdn.net/firehood_/article/details/8783589 前面的文章中提到了通过RTSP(Real Time Streaming Protocol) ...