Lucas定理

  Lucas(n,m,p)=c(n%p,m%p)* Lucas(n/p,m/p,p),其中lucas(n,m,p)=C(n,m)%p

  (这里的除号是整除)

证明——百度百科

题意:求n个数的和<=m的方案数

题解:

  求a1+a2+ ... +an=m方案数, 利用隔板法要使得每个数>=1,所以令bi = ai+1>=1 则 b1+b2+ ... +bn=m+n方案数为C(m+n-1, n-1)=C(m+n-1, m)

  故 ans = sigama(C(i+n-1, i)) = C(n-1, 0) + C(n, 1) + C(n+1, 2) + ... + C(n+m-1, m) = C(n+m, m)

  剩下的就是Lucas定理的应用了。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <utility>
#include <vector>
#include <queue>
#include <map>
#include <set>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 0x3f3f3f3fusing namespace std;long long fac[100005];long long quick(long long a, long long n, long long p)
{long long tmp=a%p, ret=1;while(n){if(n&1)ret=(ret*tmp)%p;tmp=(tmp*tmp)%p;n>>=1;}return ret%p;
}long long C(long long n, long long m, long long p)
{if(m>n) return 0;fac[0]=1;for(int i=1; i<=n; i++)fac[i]=(fac[i-1]*i)%p;return (fac[n]*quick(fac[m]*fac[n-m], p-2, p))%p;
}long long Lucas(long long n, long long m, long long p)
{long long ret=1;while(n && m){ret=ret*C(n%p, m%p, p)%p;//注意 C(10, 8) % 9这类情况n/=p;m/=p;}return ret;
}long long n,m,p;int main()
{int t;scanf("%d", &t);while(t--){scanf("%I64d%I64d%I64d", &n, &m, &p);printf("%I64d\n", Lucas(n+m, m, p));}return 0;
}

View Code

转载于:https://www.cnblogs.com/Mathics/p/4006253.html

hdu3037 Lucas定理相关推荐

  1. [HDU3037]Saving Beans,插板法+lucas定理

    [基本解题思路] 将n个相同的元素排成一行,n个元素之间出现了(n-1)个空档,现在我们用(m-1)个"档板"插入(n-1)个空档中,就把n个元素隔成有序的m份,每个组依次按组序号 ...

  2. 【数论-Lucas定理】

    1.写在前面:我始终觉得,对于一个问题要知其然,更要知其所以然.Lucas定理在刚刚接触数论的时候就知道了,因为这是一个很常用的定理,常常和中国剩余定理放在一起考.最近在组合数学上出现了很多问题,但是 ...

  3. 数论(Lucas定理) HDOJ 4349 Xiao Ming's Hope

    题目传送门 题意:求C (n,0),C (n,1),C (n,2)...C (n,n)中奇数的个数 分析:Lucas 定理:A.B是非负整数,p是质数.AB写成p进制:A=a[n]a[n-1]...a ...

  4. szucodeforce训练1081C组合数学lucas定理,div2 627的D dfs +剪枝优化,697D Puzzles{dfs序+概率}

    给你n个方格排成一行,有m种颜色,然后要把这n个方格分成k+1段,每段涂不同的颜色,问有多少种方法. 组合数学Lucas定理 排列组合问题,首先要在n-1个位置里面选出k个位置当作段与段的分割点,然后 ...

  5. BZOJ 2111 [ZJOI2010]Perm 排列计数:Tree dp + Lucas定理

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意: 给定n,p,问你有多少个1到n的排列P,对于任意整数i∈[2,n]满足P[i ...

  6. 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理

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

  7. 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 < ...

  8. 洛谷P3773 [CTSC2017]吉夫特(Lucas定理,dp)

    题意 满足$b_1 < b_2 < \dots < b_k$且$a_{b_1} \geqslant a_{b_2} \geqslant \dots \geqslant a_{b_k} ...

  9. 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)

    J. Ceizenpok's formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

最新文章

  1. NodeJs教程(介绍总结!)终于在网上找到一个靠谱点的了T_T
  2. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
  3. 一次请求到php都经过了哪些步骤,PHP高级之一次请求处理过程或生命周期详解
  4. 同济大学计算机基础教研网,消除部分依赖S1(Snum,Sname,Sdept-同济大学计算机基础教研室.ppt...
  5. python发送短信接口_python发送短信和发送邮件
  6. 多个tomcat配置
  7. centos6,7grub防止其他用户通过单用户系统破解root密码
  8. python打包工具报错_python打包生成exe报错
  9. 【转载】java中Date与String的相互转化
  10. Python学习笔记(正则表达式)
  11. cad2020打印样式放在哪个文件夹_CAD图纸管理与打印——布局与图纸集
  12. Android vivo美颜相机相册 照亮你的美 图片压缩 图片滤镜,裁剪(附带完整项目源码)
  13. 什么是原码,1’s Complement Code反码和2’s Complement Code补码
  14. 商业智能BI的特点及发展
  15. CANopen基本原理及其应用(二)——对象字典和通讯机制
  16. 如何在功能、特点、价格和性能方面选择PDF编辑器?
  17. 搭档之家:木材已成为疫情冲击下对冲新贵 忘掉黄金吧!伐木头养你~
  18. 【程序猿的黑科技】一些有趣且有用的的工具整理
  19. 2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification
  20. anki卡片浏览器_Anki怎么用|小白anki安装使用指南+记忆库资源推荐

热门文章

  1. Android屏幕方向调整的两种方式
  2. Flutter 完美的验证码输入框(2 种方法)
  3. lbs的核心技术都有哪些?_哪些行业适合做小程序呢?
  4. 惠普打印信息页无法连接到服务器,惠普M400系列打印机网络连接无法打印怎么办?...
  5. linux 查看共享内存最大值,linux上更改共享内存的最大值
  6. 「神策 2021 数据驱动大会」主会场回顾
  7. 用户流失的事前预警与事后分析
  8. 秒拍副总裁陈太锋:如何通过数据分析提升有效播放量
  9. Python 执行SQL带参数
  10. 设计模式(二) 工厂模式