转自:文章
1、暴力求解
C(n,m)=n*(n-1)*...*(n-m+1)/m!,(n<=15);
int CF(int n,int m)
{
int ans=,i,j;
for(i=n;i>=n-m+;i--)
ans*=i;
for(i=m;i>=;i--)
ans/=i;
return ans;
}
2、打表
C(n,m)=C(n-1,m-1)+C(n-1,m),(n<=10000);
const int maxn = ;
const int MOD = ;
void CF(int n,int m)
{
int i,j;
for(i=;i<=maxn;i++)
{
c[][i]=;c[i][]=;
}
for(i=;i<=maxn;i++)
for(j=;j<=maxn;j++)
c[i][j]=(c[i-][j]+c[i-][j-])%MOD;
}
3、质因数分解
C(n,m)=n!/(m!*(n-m)!),C(n,m)=p1a1-b1-c1p2a2-b2-c2…pkak-bk-ck,(n<=10000000)
#include
#include
#include
using namespace std;
const int MOD = ;
const int maxn = ;
bool a[maxn]={false};
vector prim_produce() //生成素数序列
{
vector vc;
vc.push_back();
int i,j;
for(i=;i*i<=maxn;i+=)
{
if(!a[i])
{
vc.push_back(i);