ACM-ICPC 2015 Changchun Preliminary Contest J. Unknown Treasure (卢卡斯定理+中国剩余定理)
题目链接:https://nanti.jisuanke.com/t/A1842
题目大意:给定整数n,m,k,其中1≤m≤n≤1018,k≤10,
然后给出k个素数,保证M=p[1]*p[2]……*p[k]≤1018,p[i]≤105
求C(n,m)%(p[1]*p[2]……*p[k])
解题思路:因为模数太大,所以我们先用卢卡斯定理求出对每个素数的模,然后再通过中国剩余定理就可以求得对它们的乘积的模。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll M,n,m,k,a[],b[];
ll qmul(ll a,ll b,ll p){
ll res=;
while(b){
if(b&) res=(res+a)%p;
b>>=;
a=(a+a)%p;
}
return res;
}
void exgcd(ll a,ll b,ll &x,ll &y,ll &d){
if(!b){
x=,y=,d=a;
}else{
exgcd(b,a%b,y,x,d);
y-=a/b*x;
}
}
ll INV(ll a,ll p){
ll x,y,d;
exgcd(a,p,x,y,d);
return (x%p+p)%p;
}
ll C(ll a,ll b,ll p){
if(a<b)return ;
if(b==)return ;
if(a-b<b)b=a-b;
ll ca=,cb=;
for(int i=;i<b;i++){
ca=ca*(a-i)%p;
cb=cb*(b-i)%p;
}
return ca*INV(cb,p)%p;
}
ll lucas(ll a,ll b,ll p){
ll res=;
while(a&&b){
res=res*C(a%p,b%p,p)%p; //C(n,m)%p=C(n%p,m%p)*C(n/p,m/p)%p
a/=p;
b/=p;
}
return res;
}
ll crt(){
ll x,y,d,res=;
for(int i=;i<=k;i++){
ll Mi=M/b[i];
exgcd(Mi,b[i],x,y,d);
x=(x%b[i]+b[i])%b[i];
ll tmp=qmul(a[i],qmul(Mi,x,M),M);
res=(res+tmp)%M;
}
return (res%M+M)%M;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld",&n,&m,&k);
M=;
for(int i=;i<=k;i++){
scanf("%lld",&b[i]);
a[i]=lucas(n,m,b[i]);
M*=b[i];
}
printf("%lld\n",crt());
}
return ;
}
ACM-ICPC 2015 Changchun Preliminary Contest J. Unknown Treasure (卢卡斯定理+中国剩余定理)的更多相关文章
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time
Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...
- ACM-ICPC 2015 Shenyang Preliminary Contest B. Best Solver
The so-called best problem solver can easily solve this problem, with his/her childhood sweetheart. ...
- Hdu 5446 Unknown Treasure (2015 ACM/ICPC Asia Regional Changchun Online Lucas定理 + 中国剩余定理)
题目链接: Hdu 5446 Unknown Treasure 题目描述: 就是有n个苹果,要选出来m个,问有多少种选法?还有k个素数,p1,p2,p3,...pk,结果对lcm(p1,p2,p3.. ...
- hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- hdu 5446 Unknown Treasure Lucas定理+中国剩余定理
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu 5446 Unknown Treasure 卢卡斯+中国剩余定理
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 I. Illegal or Not?
I. Illegal or Not? time limit per test 1 second memory limit per test 512 megabytes input standard i ...
随机推荐
- [BZOJ1964]hull 三维凸包:计算几何
分析 发现自己并不会计算几何. 所以先引用一下这位dalao的博客. 二维平面四个点求凸包面积->任选三个点面积之和/2 三维平面五个点求凸包体积->任选四个点体积之和/2 二维平面三个点 ...
- Fiddler简介以及web抓包1
一.Fiddler简介 简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯.网上简介很多,我们不多说. 二.Fiddler版本 Fiddle ...
- css内容过长显示省略号的几种解决方法
单行文本(方法一): 语法: text-overflow : clip | ellipsis 参数: clip : 不显示省略标记(...),而是简单的裁切 (clip这个参数是不常用的!) elli ...
- android中各种组件的生命周期问题
1,activiy生命周期 http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/ 结合ativity的状态转换来看才 ...
- (转)mnist.load_data()出现错误
解决方法:本地导入1.下载mnist.npz文件mnist.npz链接imdb.npz链接2.将上述文件放于合适位置(执行keras程序的python环境中),因为我用的是python虚拟环境,所以我 ...
- vsphere client 虚拟机随主机自动启动
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_1_递归概念&分类&注意事项
a方法里面调用自己,但是没有停止的条件 方法没有停止的条件. 栈内存溢出的异常. 只有栈,没有堆内存 先执行main方法压栈执行 main方法里面调用a方法.a方法就会压栈 改成20000
- 删除历史日志的一个API
删除历史日志的一个API bool DeleteOldFiles(const char* strFolder, const char* strPrefix, bool is_recursion, UI ...
- lua-resty-kafka erro xxxx could not be resolved (3: Host not found)
问题:使用 lua-resty-kafka 向 kafka 发送数据失败,报错如下: slave6 could not be resolved (: Host not found) 配置信息: lua ...
- uni-app-在开启小程序在微信开发工具打开时,打开失败,解决方法:手动打开
这是我自学ui-app的第一张记录内容,问题都是我在实际开发中遇到的问题 1.微信开发工具打开失败,提示是: 接着我的流程就是打开上面提到的链接,进入页面:https://developers.wei ...