逆元
acblacktea
永不放弃
展开
-
hdoj 3037 lucas定理+逆元
求c(n+m,m)公式很好推 Lucas 当mod为质数 Lucas(n,m,p)=cm(n%p,m%p)* Lucas(n/p,m/p,p) Lucas(x,0,p)=1;#include<cstdio>#define LL long longLL f[100005];void init(LL n){ f[0] = 1; for(int i=1;i<=n;i++)原创 2016-05-23 23:03:32 · 447 阅读 · 0 评论 -
百度之星-瞬间移动 组合数学逆元
有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第nn行第mm列的格子有几种方案,答案对10000000071000000007取模。去掉起点和终点 i 从 1到min(n-2,m-2) ans+=c(n-2,i)*c(m-2,i); mod为质数 用逆元处理#inclu原创 2016-05-23 21:39:26 · 545 阅读 · 0 评论 -
codeforces 361 div2 E. Mike and Geometry Problem
假如每个点被n1条线段覆盖求k个线段覆盖它的方案数 显然C(n1,k) 点太多那就离散化以线段的形式来求最多20万条线段求覆盖线段数更合理#include<cstdio>#include<iostream>#include<algorithm>#include<vector>#define mod 1000000007ll#define LL long long#define maxn原创 2016-07-16 22:34:49 · 304 阅读 · 0 评论 -
codeforces PLEASE 逆元快速幂
a[i] = (1-a[i-1])/2递推式推出正式公式 然后快速幂加逆元求出公式结果就行了#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define mod 1000000007ll#define LL long longusing namespace std;LL n;LL fast原创 2016-07-18 23:20:22 · 355 阅读 · 0 评论 -
codeforces 711E 勒让德定理 逆元
要先化简再取模 公式很好推主要是化简 用到两条性质 1. gcd(2^n - k, 2^n) = gcd(k, 2 ^ n) 因为当k为奇数 2^n - k 为奇数 那等式两边都为1 当k为偶数时 2^n - k 为偶数 k = b * 2^k1 b为奇数 2^n - k = 2^k1*(2^(n-k1)-b) 2^(n-k1)-b 是奇数,所以gcd(2^n - k, 2^n) = gc原创 2016-09-06 22:37:45 · 609 阅读 · 0 评论