题意:M=p1*p2*...pk;求C(n,m)%M,pi小于10^5,n,m,M都是小于10^18。 pi为质数

M不一定是质数 所以只能用Lucas定理求k次 C(n,m)%Pi
最后会得到一个同余方程组
x≡B[0](mod p[0])
x≡B[1](mod p[1])
x≡B[2](mod p[2])
......
解这个同余方程组 用中国剩余定理

Sample Input
1
9 5 2
3 5

Sample Output
6

 # include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <string>
# include <cmath>
# include <queue>
# include <list>
# define LL long long
using namespace std ; LL n , m , k ;
LL p[] , B[] ; LL Ext_gcd(LL a,LL b,LL &x,LL &y){ //扩展欧几里德算
if(a==&&b==) return -;
if(b==) { x=, y=; return a; }
LL d= Ext_gcd(b,a%b,y,x);
y-= a/b*x;
return d;
}
//ax = 1(mod m)
LL Inv(LL a,LL m){ //求逆元 a对m的逆元
LL d,x,y,t = m;
d= Ext_gcd(a,t,x,y);
if(d==) return (x%t+t)%t;
return -;
} LL Cm(LL n, LL m, LL p) //求组合数
{
LL a=, b=;
if(m>n) return ;
while(m)
{
a=(a*n)%p;
b=(b*m)%p;
m--;
n--;
}
return (LL)a*Inv(b,p)%p; //(a/b)%p 等价于 a*(b,p)的逆元
} int Lucas(LL n, LL m, LL p) //把n分段递归求解相乘
{
if(m==) return ;
return (LL)Cm(n%p,m%p,p)*(LL)Lucas(n/p,m/p,p)%p;
} LL multi(LL a,LL b,LL p) //大数 (a×b)%p
{
LL ret=;
while(b)
{
if(b&)
ret=(ret+a)%p;
a=(a+a)%p;
b>>=;
}
return ret; } LL china(LL n,LL *m, LL *a)// x ≡ a(mod m)
{
LL M=,d,y,x=;
int i ;
for (i = ; i < n ; i++)
M*=m[i];
for (i = ; i < n ; i++)
{
LL w=M/m[i];
d=Ext_gcd(m[i],w,d,y);
x=(x+multi(multi(y,w,M), a[i], M))%M;
}
return (x+M)%M;
} int main()
{
//freopen("in.txt","r",stdin) ;
int T ;
cin>>T ;
while(T--)
{
cin>>n>>m>>k ;
int i ;
for (i = ; i < k ; i++)
{
cin>>p[i] ;
B[i] = Lucas(n , m , p[i]) ;
}
cout<<china(k , p , B)<<endl ;
}
return ;
}

hdu 5446(2015长春网络赛J题 Lucas定理+中国剩余定理)的更多相关文章

  1. hdu 5441 (2015长春网络赛E题 带权并查集 )

    n个结点,m条边,权值是 从u到v所花的时间 ,每次询问会给一个时间,权值比 询问值小的边就可以走 从u到v 和从v到u算不同的两次 输出有多少种不同的走法(大概是这个意思吧)先把边的权值 从小到大排 ...

  2. hihocoder1236(2015长春网赛J题) Scores(bitset && 分块)

    题意:给你50000个五维点(a1,a2,a3,a4,a5),50000个询问(q1,q2,q3,q4,q5),问已知点里有多少个点(x1,x2,x3,x4,x5)满足(xi<=qi,i=1,2 ...

  3. hdu 5442 (ACM-ICPC2015长春网络赛F题)

    题意:给出一个字符串,长度是2*10^4.将它首尾相接形成环,并在环上找一个起始点顺时针或逆时针走一圈,求字典序最大的走法,如果有多个答案则找起始点最小的,若起始点也相同则选择顺时针. 分析:后缀数组 ...

  4. hihocoder 1236(2015北京网络赛 J题) 分块bitset乱搞题

    题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给 ...

  5. hdu 5443 (2015长春网赛G题 求区间最值)

    求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...

  6. 2015北京网络赛 J Scores bitset+分块

    2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...

  7. HDU 4762 Cut the Cake (2013长春网络赛1004题,公式题)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. HDU 4759 Poker Shuffle(2013长春网络赛1001题)

    Poker Shuffle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  9. HDU 4768 Flyer (2013长春网络赛1010题,二分)

    Flyer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. Kubernetes集群中Service的滚动更新

    Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ...

  2. css基础--常用css属性01

    1  背景相关 背景颜色 background-color     = 颜色名称/rgb值/十六进制值 背景图片 background-image = url('') 背景图片平铺方式 backgro ...

  3. html5页面头部

    <base href="/bulid/"/> <meta charset="UTF-8"/> <meta http-equiv=& ...

  4. Matlab周期图法使用FFT实现

    参考文章:http://www.cnblogs.com/adgk07/p/9314892.html 首先根据他这个代码和我之前手上已经拥有的那个代码,编写了一个适合自己的代码. 首先模仿他的代码,测试 ...

  5. Redis学习二:Redis入门介绍

    一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内 ...

  6. python 分布式进程体验

    抽了点时间体验了一把python 分布式进程,有点像分布式计算的意思,不过我现在还没有这个需求,先把简单体验的脚本发出来,供路过的各位高手指教 注:需要先下载multiprocessing 的pyth ...

  7. 你应该了解的强大CSS表达式 ----- expression

    IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性.就是说CSS属性后面可以是一 ...

  8. 【CodeForces】961 F. k-substrings 字符串哈希+二分

    [题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...

  9. 20155306 2016-2017-2 《Java程序设计》第七周学习总结

    20155306 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 三种时间: 格林威治标准时间(GMT)的正午是太阳抵达天空最高点之时, ...

  10. <P>标签小细节

    html标签对大小写不敏感. 注释:浏览器会自动地在段落的前后添加空行.(<p> 是块级元素) 提示:使用空的段落标记 <p></p> 去插入一个空行是个坏习惯.用 ...