BZOJ 4403: 序列统计|Lucas定理
2016-02-14 18:12
661 查看
答案为C(R-L+1+n,n) by yts1999大爷
然后lucas定理
ps:
预处理时阶乘和逆元数组中:fac[0]=inv[0]=1 !!
预处理时阶乘和逆元数组中:fac[0]=inv[0]=1 !!
要不然会wa
然后lucas定理
ps:
预处理时阶乘和逆元数组中:fac[0]=inv[0]=1 !!
预处理时阶乘和逆元数组中:fac[0]=inv[0]=1 !!
要不然会wa
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<queue> #include<vector> #include<set> #include<map> #include<iostream> #include<algorithm> #define P 1000003 #define ll long long using namespace std; int sc() { int i=0; char c=getchar(); while(c>'9'||c<'0')c=getchar(); while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar(); return i; } ll fac[P],inv[P]; void pre() { fac[0]=fac[1]=inv[0]=inv[1]=1; for(int i=2;i<P;i++) fac[i]=fac[i-1]*i%P; for(int i=2;i<P;i++) inv[i]=inv[P%i]*(P-P/i)%P; for(int i=2;i<P;i++) inv[i]=inv[i]*inv[i-1]%P; } ll C(int n,int m) { if(n<m)return 0; if(n<P&&m<P) return fac *inv[n-m]%P*inv[m]%P; return C(n%P,m%P)*C(n/P,m/P)%P; } int main() { pre(); int t=sc(); while(t--) { int n=sc(),L=sc(),R=sc(); cout<<(C(R-L+n+1,n)+P-1)%P<<endl; } return 0; }
相关文章推荐
- 变态组合数C(n,m)求解
- 蓝桥练习系统 历届试题 公式求值
- lightOJ 1067 - Combinations
- Bzoj1951 [Sdoi2010]古代猪文
- 组合(Lucas)
- 1951: [Sdoi2010]古代猪文
- fzu 2020 Lucas 定理,组合数求模模板
- 数论--Lucas Theorem
- HDU - 6129 Just do it(找规律)
- 2017百度之星初赛(B) 1001 Chess(思维+Lucas)
- Lucas定理(大数组合数取模)
- 2016 Multi-University Training Contest 6 解题报告
- hdu5894hannnnah_j’s Biological Test+组合数学+Lucas
- 【BZOJ 4403】【推公式+Lucas定理】 序列统计
- 【hdu 5894】【组合数学 lucas 费马小求逆元】 【m个人坐n个围成一周的位置每个人距离至少为k,求方法数】
- 找规律+Lucas定律_______A Simple Chess(hdu 5794 2016多校第六场)
- Bzoj3782:上学路线:组合数学+Lucas+CRT+DP
- Lucas求解组合数模板
- hdu 4349(Lucas定理)
- 【BZOJ3656】异或【扩展Lucas】【线性无关】