Day 34 算法笔记之数学问题 5.8 组合数

//n中质因子p的个数 
int cal(int n, int p){
	int ans=0;
	while(n){
		ans+=n/p;
		n/=p;
	}
	return ans;
}
//组合数(递归)
long long res[100][100] = {0};
long long c(long long n, long long m){
	if(m==0||m==n) return 1;
	if(res[n][m]!=0) return res[n][m];
	return res[n][m] = c(n-1,m)+c(n-1,m-1);
}
//组合数(定义式)
long long c(long long n,long long m){
	long long ans = 1;
	for(long long i=1;i<=m;i++){
		ans = ans*(n-m+i)/i;
	}
	return ans;
}
//组合数(递归)
long long res[100][100] = {0};
long long c(long long n, long long m,int p){
	if(m==0||m==n) return 1;
	if(res[n][m]!=0) return res[n][m];
	return (res[n][m] = c(n-1,m)+c(n-1,m-1))%p;
}

猜你喜欢

转载自blog.csdn.net/aixiaoxiao13/article/details/121130752