HDU5446:Unknown Treasure——题解
http://acm.hdu.edu.cn/showproblem.php?pid=5446
求C(n,m)%(p1p2…pk)的值,其中pi均为质数。
参考:https://www.cnblogs.com/linyujun/p/5199684.html
预备知识:
1.Lucas定理(图片来自百科):当p为素数时,有

2.中国剩余定理:

3.求逆元。
根据中国剩余定理可知,我们求C(n,m)%(p1p2…pk),实际就是在求解同余方程组:
C(n,m)%p1=a1
C(n,m)%p2=a2
……
C(n,m)%p3=a3
最终求得的C(n,m)即是在%(p1p2…pk)意义下的。
根据lucas定理,我们能立刻求出所有a的值。
在那之后用中国剩余定理求解即可。
(另外如果逆元不存在的话我就不知道怎么做了emmm……不过看数据貌似避开了这个问题)
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll qpow(ll k,ll n,ll p){
ll ans=;
while(n){
if(n&)ans=ans*k%p;
k=k*k%p;n>>=;
}
return ans;
}
ll mul(ll a,ll b,ll p){
ll ans=;
while(b){
if(b&)ans=(ans+a)%p;
a=(a<<)%p;b>>=;
}
return ans;
}
ll C(ll n,ll m,ll p){
if(n<m)return ;
if(n==m)return ;
if(m>n-m)m=n-m;
ll cn=,cm=;
for(ll i=;i<m;i++){
cn=cn*(n-i)%p;
cm=cm*(m-i)%p;
}
return cn*qpow(cm%p,p-,p)%p;
}
ll lucas(ll n,ll m,ll p){
ll ans=;
while(n&&m&&ans){
ans=ans*C(n%p,m%p,p)%p;
n/=p;m/=p;
}
return ans;
}
int t;
ll n,m,k,p[],r[],P;
int main(){
cin>>t;
while(t--){
cin>>n>>m>>k;P=;
for(int i=;i<=k;i++){
cin>>p[i];P*=p[i];
r[i]=lucas(n,m,p[i]);
}
ll ans=;
for(int i=;i<=k;i++){
ll w=P/p[i],inv=qpow(w%p[i],p[i]-,p[i]);
ans=(ans+mul(w*inv,r[i],P))%P;
}
printf("%lld\n",ans);
}
return ;
}
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++
HDU5446:Unknown Treasure——题解的更多相关文章
- HDU5446 Unknown Treasure(组合数膜合数-->Lucas+中国剩余定理)
>On the way to the next secret treasure hiding place, the mathematician discovered a cave unknown ...
- Unknown Treasure(hdu5446)
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- HDU 5446 Unknown Treasure Lucas+中国剩余定理
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 Unknown Treasure 问题描述 On the way to the next se ...
- hdu 5446 Unknown Treasure lucas和CRT
Unknown Treasure Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- 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 ...
- Unknown Treasure (卢卡斯 + 孙子定理, 模板题)
Unknown Treasure 参考链接 : https://www.cnblogs.com/linyujun/p/5199684.html 卢卡斯定理 : C(n, m) % p = C(n ...
- 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 5446 Unknown Treasure
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
随机推荐
- java 面向对象一
一 基础部分 1.基本数据类型 Java的八种基本数据类型不支持面向对象的编程机制,不具备“对象”的特性:没有成员变量.方法可以调用.java之所以提供这八种基本数据类型,是为了照顾程序员的传统习惯. ...
- webpack loader 生成虚拟文件的方案
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 使用 webpack 的时候,难免需要写一些 loader,接着就会遇到一个很纠结的问题.该 loade ...
- Siki_Unity_1-8_使用Unity开发2D游戏_PongGame
Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...
- 如何编写 Python 程序
如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...
- TW实习日记:第18天
今天的bug没有那么多了,都是些小bug,一下就改好了.或者是接口那边数据返回的有问题,通知一下同事就ok了.主要今天是在赶功能进度,然而有一个功能模块需求里并没有写,实在是不知道要做成什么样子,真的 ...
- Python数据分析实战-Boston Public Schools GEO数据分析-Part1
项目目标: Boston Public Schools Geo数据是来自于Boston地区的公共学校的数据,具体描述了学校的坐标,名字,类型等.基于此数据,我们可以学习一些基本的Python数据分析的 ...
- Bitcoin: A Peer-to-Peer Electronic Cash System
Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto October 31, 2008 Abstract A purely p ...
- C# 生成行和列
private DataTable GetListBind() { DataTable dt = new DataTable(); try { dt.Columns.Add("1" ...
- POJ 1815 Friendship(最大流最小割の字典序割点集)
Description In modern society, each person has his own friends. Since all the people are very busy, ...
- POJ 2455 Secret Milking Machine(最大流+二分)
Description Farmer John is constructing a new milking machine and wishes to keep it secret as long a ...