题目链接:传送门

题意:

求C(n,m)%(p1*p2*p3*...*pk).

分析:

用Lucas求 A1 = C(n,m)%p1,A2 = C(n,m)%p2,...,Ak = C(n,m)%pk

则用同余方程x = A1 (mod p1) ,x = A2 (mod p2) ,...,x = Ak(mod pk) ,然后用CRT解一下就好了。

代码如下:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <cmath>
using namespace std;
typedef long long LL;const int maxn = 20;LL a[maxn];
LL M[maxn] ;LL mul(LL a,LL b,LL mod){LL ans = 0;while(b){if(b&1) ans=(ans+a)%mod;b>>=1;a=(a+a)%mod;}return ans;
}LL quick_mod(LL a,LL b,LL m)
{LL ans = 1;a %= m;while(b){if(b & 1){ans = ans * a % m;b--;}b >>= 1;a = a * a % m;}return ans;
}LL C(LL n, LL m,int cur)
{LL p = M[cur];if(m > n) return 0;if(m>n-m)m= n-m;LL ans = 1;for(LL i=1; i<=m; i++){LL a = (n + i - m) % p;LL b = i % p;ans = mul(ans , mul(a , quick_mod(b, p-2,p) , p), p);  //p为素数,i对p的逆元可以不用扩展欧几里得进行求解  re=i^(p-2)}return ans%p;
}LL Lucas(LL n,LL k,int cur)
{LL p = M[cur];if(k == 0)  return 1%p;return mul(C(n % p, k % p, cur) ,Lucas(n / p, k / p, cur) ,p);
}void extend_Euclid(LL a, LL b, LL &x, LL &y)
{if(b == 0){x = 1;y = 0;return;}extend_Euclid(b, a % b,x, y);LL tmp = x;x = y;y = tmp - a / b * y;
}LL RemindChina(LL a[],LL m[],int k)
{LL M = 1;LL ans = 0;for(int i=0; i<k; i++)M *= m[i];for(int i=0; i<k; i++){LL x, y;LL Mi = M / m[i];extend_Euclid(Mi, m[i], x, y);LL tmp;if(x<0){x=-x;tmp = mul(Mi,x,M);tmp = mul(tmp,a[i],M);tmp = -tmp;}else {tmp = mul(Mi,x,M);tmp = mul(tmp,a[i],M);}ans = (ans + tmp) % M;}while(ans<0)ans += M;return ans;
}int main()
{int t;scanf("%d",&t);while(t--){LL n,m;int k;scanf("%I64d%I64d%d",&n,&m,&k);for(int i=0;i<k;i++){scanf("%I64d",&M[i]);}for(int i=0;i<k;i++){a[i] = Lucas(n,m,i)%M[i];}printf("%I64d\n",RemindChina(a,M,k));}return 0;
}

HDU 5446 Unknown Treasure(Lucas定理+CRT)相关推荐

  1. [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

  2. BZOJ 4338 糖果(扩展Lucas定理+CRT)

    题目链接:BZOJ 4338 题目大意:用数字1~k填一个n*m的表格,每种数字可用任意次,要求每行数字1~m列单调不减,任意两行不完全相同,求方案数对P取模的值. 题解:扩展Lucas+CRT模板题 ...

  3. HDU 3037 Saving Beans [Lucas定理]

    不超过n个球放入m个盒子方案数,盒子可以为空 1 <= n, m <= 1000000000, 1 < p < 100000 and p is guaranteed to be ...

  4. HDU 5226 Tom and matrix(组合数学+Lucas定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5226 题意:给一个矩阵a,a[i][j] = C(i,j)(i>=j) or 0(i < ...

  5. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix

    Tom and matrix Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5226 Mean: 题意很简单,略. analy ...

  6. hdu 3944 DP? (Lucas 定理)

    仔细观察杨辉三角后可以发现从最高点到第n行第k个数的最短路为c(n+1,k); 根据Lucas定理可以求出,一般来说要求答案模去一个质数p且p的范围不大于10^5则可用Lucas. Lucas(n,m ...

  7. hdu 3037 Lucas定理

    题目可以转换成 x1+x2+--+xn=m 有多少组解,m在题中可以取0-m. x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)*(m+2)...(m+n-1) = ...

  8. HDU5446:Unknown Treasure——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=5446 求C(n,m)%(p1p2-pk)的值,其中pi均为质数. 参考:https://www.cnblogs. ...

  9. Lucas定理与大组合数的取模的求法总结

    Lucas定理与大组合数的取模的求法总结 分类: ACMer 数学 2012-03-11 09:38  1219人阅读  评论(0)  收藏  举报 c 首先给出这个Lucas定理: A.B是非负整数 ...

最新文章

  1. 史上最伟大的20位程序员中,遗憾没有中国人
  2. Android之设置横屏竖屏
  3. Linux基础知识(3)---查看linux系统重启之前的log -- last_kmsg
  4. 人工智能重点领域有哪些呢?
  5. Machine Learning Algorithms Study Notes--Supervised Learning
  6. [翻译]Monocular Visual Odometry using OpenCV
  7. 刚接触mybatis,很容易分不清#{id}和#{param1}的使用情况,本篇文章详解了两者的作用以及使用情况
  8. FILD和FSTP转换成C语言
  9. 200以后最小质数:
  10. myeclipse设置黑色主题
  11. matlab视频行人检测,利用MATLAB实现了视频图像行人识别与检测
  12. 格力悄悄上架“大松5G手机”董明珠又杀回手机圈了?
  13. ubuntu下bitcoin core的安装和编译
  14. linux网卡配置没生效,linux上网络配置不生效的解决办法
  15. linux安装vsftpd服务,Linux系统安装Vsftpd
  16. 手机移动端视频全屏播放(兼容Android与iOS)
  17. 解决Chrome自带翻译功能无法使用问题
  18. CentOS8 防火墙设置
  19. 深度学习决策支持 时空预测_重工业的预测性维护和决策支持系统
  20. Linux全攻略--Mail服务器配置与管理

热门文章

  1. 2021年平均工资出炉,IT行业不出所料
  2. not found error :\tensorflow\contrib\coder\python\ops\_coder_ops.so——_gru_ops.so——_lstm_ops.so···
  3. 女性如何理解男人的性需求? 男性的性表达
  4. Java中“||”与“|”的区别【JAVA基础】
  5. MySQL之LIST和LIST COLUMNS分区初探
  6. C++ 引用Lib和Dll的方法总结
  7. 5G的NSA和SA,到底啥意思?
  8. MATLAB基础编程(005-01)之Resize an Image with imresize Function 使用imresize函数 调整图像大小
  9. 线性代数的本质--对线性空间、向量和矩阵的直觉描述
  10. 爸爸的信:学会鄙视自己,才不会妥协