排列

定义:

从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示

公式:

A(n,m)=n(n-1)*(n-2)*……*(n-m+1)= n!/(n-m)!

PS:此外规定0!=1

特殊排列:

  • 不全相异元素的排列:

在n个元素中 n1个元素彼此相同 有n2个元素彼此相同......有nm个元素彼此相同 并且n1+n2+...+nm=n

其排列数公式为:n!/(n1!*n2!*...*nm!)

【引例】把3个相同的黄球 2个相同的蓝球 4个相同的白球排成一排 有(3+2+4)!/(3!*2!*4!)=1260

  • 圆排列

从n个数中取m个 不分首尾地排成一个圆圈的排列叫做圆排列 方案数为A(n,m)/m=n!/(m*(n-m)!)


组合

定义:

从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示

公式:

C(n,m)=A(n,m)/m!=n!/(m!(n-m)!) 因为多出了一个全排列需要删去

可重复组合:从n个元素中 取出r个元素组成一个组合 且允许这r个重复使用 记为H(n,r)=C(n+r-1,r)

性质:

  1. C(n,m)=C(n,n-m) 规定:C(n,0)=C(n,n)=1
  2. C(n+1,m)=C(n,m)+C(n,m-1) 杨辉三角递推

二项式定理:

(a+b)nni=0C(n,i)a(n-i)bi

二项式系数:C(n,i) 运用杨辉三角

【例题】洛谷P1313 [NOIP2011TG]计算系数:https://www.luogu.org/problemnew/show/P1313

题解链接:https://www.cnblogs.com/BrokenString/p/9665237.html


Lucas定理

定义:

Lucas(n,m,p)=C(n%p,m%p)* Lucas(n/p,m/p,p)

Lucas定理是用来求C(n,m) mod p的值,p是素数

#include<iostream>
#include<cstdio>
using namespace std;
#define LL long long
LL T,n,m,p;
LL quickpow(LL a,LL b)
{LL ret=1;while(b){if(b&1) ret=ret*a%p;a=a*a%p;b>>=1;}return ret;
}
LL C(LL n,LL m)
{if(m>n) return 0;LL a=1,b=1;for(LL i=n-m+1;i<=n;i++)a=a*i%p;//计算n!/(n-m)! for(LL i=2;i<=m;i++)b=b*i%p;//计算1/m! return a*quickpow(b,p-2)%p;//费马小定理求逆元
}
LL Lucas(LL n,LL m)
{if(!m) return 1;else return (C(n%p,m%p)*Lucas(n/p,m/p))%p;//递推公式
}
int main()
{scanf("%lld",&T);while(T){T--;scanf("%lld%lld%lld",&n,&m,&p);printf("%lld\n",Lucas(n,m));}
}

View Code


Catalan数列

定义:

给定n个0和n个1,它们按照某种顺序排成长度为2n的序列 满足任意前缀中0的个数都不少于1的个数的序列数量为:Catn=C(2n,n)/(n+1)

有关题目:

  • n个左括号和n个右括号组成的合法括号序列数量为Catn
  • 1,2...n经过一个栈 形成合法的出栈顺序数量为Catn
  • n个节点构成的不同二叉树的数量为Catn
  • 在平面直角坐标系上 每步只能向上或者向右走 从(0,0)到(n,n)并且除两个端点外不接触直线y=x的路线数量为2Catn
  • 在一个凸多边形中,通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。任务是键盘上输入凸多边形的边数n,求不同划分的方案数f(n)
  • n层的阶梯切割为n个矩形的切法数

这里给出一个较为详细的dalao的blog:https://blog.csdn.net/duanruibupt/article/details/6869431

小技巧:

如果看到

n=1,answer=1;

n=2,answer=2;

n=3,answer=5;

n=4,answer=14;

n=5,answer=42;

基本可以往卡特兰数方面想..

转载于:https://www.cnblogs.com/BrokenString/p/9664899.html

【数论】排列组合问题相关推荐

  1. C++基础数论————排列组合

    排列组合的定义: 排列就是从n个数中找出m个进行排列,共有多少种方案? 这一定要考虑顺序. 公式就是: 而组合就从从n个数中找出m个进行组合,共有多少种方案? 这一定不要考虑顺序. 公式就是: 现在, ...

  2. 组合数学(排列组合,容斥原理,数论定理)

    组合数学的学习 排列组合 一.排列组合基础 二.排列组合练习题 容斥原理 定理学习 例题练习 例题1: [ 1 , n ] [1,n] [1,n] 中有多少个数能被 x 或 y 整除 例题2: [ 1 ...

  3. 【数论】排列组合学习笔记

    目录 简介 加原理和乘法原理 加法原理 乘法原理 两原理的区别 例子 排列 例子 简介 排列组合是组合数学中的一种.排列就是指从给定个数的元素中取出指定个数的元素进行排序:组合则是指从给定个数的元素中 ...

  4. 数学--数论-多重集排列组合与母函数

    一.无重复元素的排列组合定义 排列,英文名为Permutation,是指从某元素集合中取出指定个数的元素进行排序 组合,英文名为Combination,是指从某元素集合中仅仅取出指定个数的元素,不考虑 ...

  5. 【数论】 排列组合中的隔板问题

    排列组合中的可以一个空插多个隔板的问题 但是现在要解决的情况是盒子可以分不到球.这样我们通过一步化归,转换为上面的情况:添加 nn 个球,使每个盒子至少有一个球.这样分完后只要将每个盒子多拿的一个球收 ...

  6. 信奥中的数学:排列组合

    排列组合题型总结课程(一) 排列组合题型总结课程(一)_哔哩哔哩_bilibili 排列组合的公式 排列组合的公式_百度知道 [Manim动画]如何以可视化视角直观理解排列组合? [Manim动画]如 ...

  7. 排列组合公式 与24点编程游戏

    排列组合公式 此外, 规定0! = 1. 24点游戏编程问题 问题描述 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [ ...

  8. java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值

    null export default { data() { return { resultArr:[] } }, mounted(){ this.sss('aaba','abac'); this.s ...

  9. php 1到9加,php通过排列组合实现1到9数字相加都等于20的方法

    摘要:本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下:<?php set_time_limit(0); /* 函数说明:huoqu_z ...

  10. 论排列组合,持续更新

    今天刚好碰到了一个排列组合问题,因为之前对这方面的学习比较少,所以用的非常蠢的方法做了四位数中取三位的排列,写的程序太有局限性,源码如下 #define _CRT_SECURE_NO_WORNINGS ...

最新文章

  1. 如果不发论文,我们用什么证明自己的科研实力?
  2. javaScript原生定义的函数
  3. 为什么不要使用finalize方法
  4. Mysql(五) JDBC
  5. SessionStorage 和 LocalStorage 生命周期 以及 浏览器刷新操作意味着什么?
  6. css --- flex:n的解析
  7. 有上下界网络流问题汇总
  8. 装配图位置偏转怎么调整_物理微课|匀变速直线运动、电容器动态分析及磁偏转技巧、方法、模型...
  9. Kubernetes 上调试 distroless 容器
  10. 单片机交通灯的电路图以及代码_单片机晶振“问答篇”(下),17大单片机晶振问题全解答...
  11. 7723java版_绝代双骄_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]
  12. VMware 虚拟机下载与安装
  13. matlab画图入门教程
  14. 联咏Novatek_NT98566(对标Sigmastar SSC337)_IMX335单板_IPC模组开发案例
  15. 2021年最新程序员培训机构排名,学习前避坑必看
  16. 飞天云动能否一飞冲天?
  17. 实验一 简单静态网页设计
  18. 【云计算的1024种玩法】搭建个人博客
  19. 元数据管理与数据质量保障
  20. php计算第几周,php计算当前是一年或一月中第几周的函数

热门文章

  1. 红外接收二极管(摘自百度百科)
  2. appearance: none;的使用
  3. 代码的实质(图灵机怎么看待成状态图)
  4. 【转】当今在世智商最高的十大天才
  5. 电信无线网卡无服务器,优化电信3G无线上网卡网速的办法
  6. Python爬虫-利用Scrapy框架完成天天书屋内容爬取并保存本地txt
  7. Chinese Postman Problem Aizu - DPL_2_B(无向图中国邮路问题)
  8. 5G NR PDCCH
  9. chkconfig设置开机自启
  10. Unity获取GPS经纬度并解析成具体位置