关于不定方程解的个数的问题
不定方程的解的个数
Lv0
首先我们看这样一个问题,求 ∑ i = 1 n x i = b \sum\limits_{i = 1}^n x_i = b i=1∑nxi=b 的非负整数解的个数。
这个问题就非常简单啊,我们稍微把他转化一下,这个问题就等价于有 n n n 个小朋友分 b b b 个糖果,每个小朋友至少分到 0 0 0 个糖果(好惨啊),求分完糖果的方案数。
然后我们再转化一下问题,现在有 b b b 个糖果排成一排,在其中放 n − 1 n - 1 n−1 个木板(可以有多个木板在同一个格子里),这样就能把这些糖果分成 n n n 部分,求方木板的方案数。
这样就很显然了嘛,答案就是总共有 n + b − 1 n + b - 1 n+b−1 个格子可选,在其中选出 n − 1 n - 1 n−1 个格子的方案数,也就是 C n + b − 1 n − 1 C_{n + b - 1}^{n - 1} Cn+b−1n−1。
Lv1
还有这样一个问题,求 ∑ i = 1 n x i = b \sum\limits_{i = 1}^nx_i = b i=1∑nxi=b 且 x i ≥ l i x_i \geq l_i xi≥li 的非负整数解数。显然我们非常不希望出现后面的约束条件,于是我们考虑这样:
∑ i = 1 n x i = b − ∑ i = 1 n l i \sum_{i = 1}^nx_i = b - \sum_{i = 1}^nl_i i=1∑nxi=b−i=1∑nli
这样一来我们就把问题转化成了第一个问题一样的形式了(就相当于我们减掉了 x i < l i x_i < l_i xi<li 的贡献),答案就是:
a n s = ( n + b − ∑ i = 1 n l i − 1 n − 1 ) ans = \begin{pmatrix} n + b - \sum\limits_{i = 1}^n l_i - 1 \\ n - 1 \end{pmatrix} ans=⎝ ⎛n+b−i=1∑nli−1n−1⎠ ⎞
Lv2
最后一个问题,求 ∑ i = 1 n x i = b \sum\limits_{i = 1}^nx_i = b i=1∑nxi=b 且 x i ≤ r i x_i \leq r_i xi≤ri 的非负整数解的个数。这个问题就不像上一个那么好转换了。所以我么考虑容斥掉 x i ≥ r i + 1 x_i \geq r_i + 1 xi≥ri+1 的贡献。
我们令集合 S S S 表示 ∑ i = 1 n ( x i ≥ r i + 1 ) \sum\limits_{i = 1}^n(x_i \geq r_i + 1) i=1∑n(xi≥ri+1) 的二进制集合。这样就相当于求 S = { 0 , 0 , ⋯ , 0 } S = \{ 0, 0, \cdots, 0 \} S={0,0,⋯,0} 的时候的答案。我们令 f ( S ) f(S) f(S) 表示该二进制集合为 S S S 时的答案。则有:
f ( S = { 0 , 0 , ⋯ , 0 } ) = t o t − ∑ S ⊂ U ( − 1 ) ∣ S ∣ + 1 f ( S ) f(S = \{0, 0, \cdots, 0\}) = tot - \sum_{S \subset U}(-1)^{|S| + 1}f(S) f(S={0,0,⋯,0})=tot−S⊂U∑(−1)∣S∣+1f(S)
其中 t o t tot tot 表示总数,也就是第一个问题的答案。 U = { 0 , 0 , ⋯ , 0 } U = \{ 0, 0, \cdots, 0 \} U={0,0,⋯,0} ( n n n 个 0 0 0)。上面这个式子就是容斥原理嘛。
然后其中(等价于第二个问题):
f ( S ) = ( n + b − 1 − ∑ i ∈ S ( r i + 1 ) n − 1 ) f(S) = \begin{pmatrix} n + b - 1 - \sum\limits_{i \in S} (r_i + 1) \\ n - 1 \end{pmatrix} f(S)=(n+b−1−i∈S∑(ri+1)n−1)
于是:
a n s = ( n + b − 1 n − 1 ) − ∑ S ⊂ U ( − 1 ) ∣ S ∣ + 1 f ( S ) = ( n + b − 1 n − 1 ) + ∑ S ⊂ U ( − 1 ) ∣ S ∣ ( n + b − 1 − ∑ i ∈ S ( r i + 1 ) n − 1 ) = ∑ S ⊆ U ( − 1 ) ∣ S ∣ f ( S ) \begin{aligned} ans & = \begin{pmatrix} n + b - 1 \\ n - 1 \end{pmatrix} - \sum_{S \subset U}(-1)^{|S| + 1} f(S) \\ & = \begin{pmatrix} n + b - 1 \\ n - 1 \end{pmatrix} + \sum_{S \subset U} (-1)^{|S|} \begin{pmatrix} n + b - 1 - \sum\limits_{i \in S}(r_i + 1) \\ n - 1 \end{pmatrix} \\ & = \sum_{S \subseteq U} (-1)^{|S|}f(S) \end{aligned} ans=(n+b−1n−1)−S⊂U∑(−1)∣S∣+1f(S)=(n+b−1n−1)+S⊂U∑(−1)∣S∣(n+b−1−i∈S∑(ri+1)n−1)=S⊆U∑(−1)∣S∣f(S)
关于不定方程解的个数的问题相关推荐
- 计算不定方程解的个数的方法汇总
写在前面 最近做了一些题目, 才发现当初学习组合数学时候还是做的题太少, 很多东西只是知道其概念如何, 真正上手题目还是get不到精髓. 这次来总结一下计算不定方程解的个数的一些方法, 加深一下对这块 ...
- python解多元多次方程组_多元一次不定方程解的个数
#!/usr/bin/python3.6 # -*- coding: utf-8 -*- """ 多元一次不定方程解的个数 problem1: 将30条鱼放入10个桶中, ...
- HDU 5201 The Monkey King 组合数+不定方程解的个数
题意:链接 方法:组合数+不定方程解的个数 解析: 毒瘤题,好难啊,刷一个我就不想再刷另外两个了 这玩意的话,后俩先不看. 先看前两个. 前两个是啥意思呢. 不妨考虑一下挡板法. 这里我举一个某篇我想 ...
- 多元一次不定方程解的个数
链接:https://ac.nowcoder.com/acm/contest/553/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
文章目录 一.使用生成函数求解不定方程解个数 1.带限制条件 2.带系数 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与 ...
- 求解多元一次方程解的个数(参考内容)
1.整数多元一次不定方程的矩阵解法与程序设计 2.欧几里得算法(含严谨证明) 3.扩展欧几里得算法(含严谨证明) 4.多元一次不定方程解的个数 但只有系数是1的时候才可以排列组合..我们要解决的是系数 ...
- 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )
文章目录 一.使用生成函数求解不定方程解个数示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...
- 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )
文章目录 一.使用生成函数求解不定方程解个数示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...
- 隔板法求解不定方程x1+x2+x3=5解的个数
隔板法求解不定方程的解的个数 文章目录 隔板法求解不定方程的解的个数 1.求正整数解的个数--普通隔板法 2.求非负整数解的个数--添加元素隔板法 1.求正整数解的个数--普通隔板法 将不定方程想象成 ...
最新文章
- 代替Mask R-CNN,BlendMask欲做实例预测任务的新基准?
- 实验四 使用C++的mfc实现圆心为任意位置的圆的绘制。
- 数组的扩展-搜集自无忧脚本
- jdk13.0.2安装mysql_centos下的安装mysql,jdk
- Mysql存时间不一致_node mysql 存在数据库中的时间和取到前端的时间不一致,请问怎么解决...
- Java中静态代码块
- 实例解说 fdisk 使用方法
- hdu1312---------------DFS模板(调用STL)
- c语言 机器语言 汇编语言_多语言机器人新闻记者
- oracle怎么下载安装,Oracle数据库下载与安装的完整步骤
- 分享积累5年的人工智能网站,很大帮助
- 通过腾讯地图查询经纬度及相关信息
- 基于Java GUI的资产管理系统的设计与实现
- 人工智能基础——知识的表示方法,产生式表示法
- “跨次元”检测模型hold住各种画风,真人赛博,在线Demo可玩
- 7-7 The Whimper of Universe (30 分)
- OpenGL 版本升级
- 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
- 如何通过腾讯SOSO问问获得巨大IP流量?
- 数据结构:数组和广义表
热门文章
- python符号计算_用Python学数学之Sympy代数符号运算
- 【深度强化学习】策略梯度 Policy Gradients
- Building a Crosswalk application
- 学Java怎么看API(详细图解)+查看Java源码(IDEA)
- 11.树莓派博通BCM2835芯片手册导读与IO口驱动代码调试和测试
- 5月25日第壹简报,星期三,农历四月廿五
- 『openframeworks』shader制作六边形马赛克效果
- MySQL笔记(持续更新)
- flex4.5嵌入网页之WEB
- Linux环境下安装及部署Nginx教程