错排_组合数学_卢卡斯定理
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
FZU -- 2282 和 DHU -- 2049 【简单错排 + 组合数学】
传送门 FZU — 2282 题意 : 给你n个人, k 个数, 任意交换n个人的顺序,1号还在一号位就表示它的位置是对的. 则问你至少k个人还在对的位置的方案有几种. //思路:思路这个应该就可以想到用错排公式加组合数学解决. 因为涉及到除法进行去mod运算, 所以要用到逆元. 首先预处理所有的数据,然后直接算就是了./** @Cain*/ #define ll long long int原创 2017-07-23 22:43:20 · 857 阅读 · 0 评论 -
求组合数的一个递推板子(取模循环的和更加适用于取mod并且范围较大的)
ll C[1001][1001]; void calc_Cmn()//求组合数 { for(int i=0;i<1001;i++) { C[i][0] = C[i][i] = 1; for(int j=1;j<i;j++) C[i][j]=C[i-1][j-1]+C[i-1][j]; } }//这个求组合数是上限, 我们可以知道原创 2017-11-25 20:50:40 · 547 阅读 · 0 评论 -
POj 2249 Binomial Showdown 【组合数学】
传送门 // 题意: 就是求C(n, k).// 思路: 当然就无脑的方法就是直接暴力求阶层, 但是这个控制不好边界. 所以我们要换一种思路. 首先用组合数的特点C(n, m) = C(n, n - m). 把较小的后面那个求出来, 然后边乘边除这样既不会越界速度也很快. (具体原理我也不是太懂, 我试了几个发现都可以整除, 然后就A了……)AC Codevoid solve() { l原创 2018-01-25 15:39:48 · 281 阅读 · 0 评论 -
HDU --- 5446 Unknown Treasure 数论综合【Lucas定理 + 中国剩余定理 + 快速乘 + 思维】
传送门 //题意: 给出n,m,k. 下一行给出k个质数. 求Cmnmod∏piC_n^m mod\prod p_i. //一看n,m的范围都很大, mod的数也很大, 那么肯定不是简单的做法, 首先需要分析题意有 所以X就是我们要求的值, 我们可以发现等式右边我们可以用Lucas算出每一个具体的值, 然后得到了一系列类似于同余方程的方程组, 然后应用中国剩余定理求解出这些方程组就可以得原创 2018-03-10 12:14:54 · 283 阅读 · 0 评论 -
卢卡斯定理
对于这种问题C(n, m) % p, n, m, p 都比较大的, 就要用卢卡斯定理了, 但是这里又分了两种情况, 一种是n, m 在1e6以内的, 并且case比较多的, 那么我们每次取调用卢卡斯肯定会T的, 所以我们要做的就是朴素的算就是了, 也就是直接调用组合数公式, 这个时候我们只要先预处理好1e6以内的带mod阶乘就行啦…. 类似于离线求const int maxn = 1e5+5; ll原创 2018-03-10 12:28:41 · 787 阅读 · 0 评论