求C(n,m)%mod
2016-07-11 15:38
253 查看
long long pow_mod(int a,int n) { long long ans=1; while(n) { if(n&1) ans=ans*a%mod; a=a*a%mod; n>>=1; } return ans; } long long C(int k,int n) { long long sum=1; for(int i=1,j=n;i<=k;i++,j--) sum=sum*j*pow_mod(i,mod-2)%mod; return sum; }
O(1)
void init() { dp[1]=1; for(long long i=2;i<=1000000;i++) dp[i]=dp[i-1]*i%mod; } long long pow_mod(long long a,long long n) { long long ans=1; while(n) { if(n&1) ans=ans*a%mod; a=a*a%mod; n>>=1; } return ans; } long long C(long long a,long long b) { if(!b) return 1; long long ans=dp[a]; ans=ans*pow_mod(dp[a-b],mod-2)%mod; ans=ans*pow_mod(dp[b],mod-2)%mod; return ans; }
Lucas
long long pow_mod(long long a,long long n)
{
long long ans=1;
while(n)
{
if(n&1) ans=ans*a%p;
a=a*a%p;
n>>=1;
}
return ans;
}
long long C(LL n, LL m)
{
if(m > n) return 0;
LL ans = 1;
for(int i=1; i<=m; i++)
{
LL a = (n + i - m) % p;
LL b = i % p;
ans = ans * (a * pow_mod(b, p-2) % p) % p;
}
return ans;
}
LL Lucas(LL n, LL m)///C(n,m)
{
if(m == 0) return 1;
return C(n % p, m % p) * Lucas(n / p, m / p) % p;
}
相关文章推荐
- 抽象类和接口
- (4.2.33)Android上玩玩Hook(1):Cydia Substrate初识
- Android开源特效常用链接大集合
- WebForm中使用MVC
- css line-height 探究
- css line-height 探究
- C# 文件的输入与输出
- Linux下Thrift的安装
- Java实现代理ip访问网络的实现方式之Java实现切换ip访问网络资源
- mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
- hdu1272(并查集水题,然而我状态处于低谷,无限wa呜呜呜)
- centos下安装JDK8的方法
- CodeForces 686A Free Ice Cream
- eclipse打包遇到的manifest文件丢失等问题解决
- 趣味100道C语言程序题num two
- 自定义view画圆
- OSX Eclipse Maven 报错JAVA_HOME
- head标签
- Qt智能指针
- visio画uml类图添加自定义数据类型