原题链接:P2822 [NOIP2016 提高组] 组合数问题
题目描述
组合数 ( n m ) \binom{n}{m} (mn) 表示的是从 n n n 个物品中选出 m m m 个物品的方案数。举个例子,从 ( 1 , 2 , 3 ) (1,2,3) (1,2,3) 三个物品中选择两个物品可以有 ( 1 , 2 ) , ( 1 , 3 ) , ( 2 , 3 ) (1,2),(1,3),(2,3) (1,2),(1,3),(2,3) 这三种选择方法。根据组合数的定义,我们可以给出计算组合数 ( n m ) \binom{n}{m} (mn) 的一般公式:
( n m ) = n ! m ! ( n − m ) ! \binom{n}{m}=\frac{n!}{m!(n-m)!} (mn)=m!(n−m)!n!
其中 n ! = 1 × 2 × ⋯ × n n!=1\times2\times\cdots\times n n!=1×2×⋯×n;特别地,定义 0 ! = 1 0!=1 0!=1。
小葱想知道如果给定 n , m n,m n,m 和 k k k,对于所有的 0 ≤ i ≤ n , 0 ≤ j ≤ min ( i , m ) 0\leq i\leq n,0\leq j\leq \min \left ( i, m \right ) 0≤i≤n,0≤j≤min(i,

本文介绍了一道关于组合数的编程问题,涉及计算给定条件下的组合数对满足特定模数的情况。文章介绍了使用杨辉三角的递推公式和容斥原理进行优化,将查询时间复杂度降低至O(1)。

559

被折叠的 条评论
为什么被折叠?



