1.n!中质因子p的个数
int cal(int n,int p){
int ans=0;
for(int i=2;i<=n;i++){
int temp=i;
while(temp%p==0){
ans++;
temp/=p;
}
}
return ans;
}
int cal(int n,int p){
int ans=0;
while(n!=0){
ans+=n/p;
n/=p;
}
}
int cal(int n,int p){
if(n<p) return 0;
return n/p+cal(n/p,p);
}
2.组合数的计算
ll c(ll a,ll b){
if(b==0||b==a) return 1;
return c(a-1,b)+c(a-1,b-1);
}
ll res[64][64]={0};
ll c(ll n,ll 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);
}
const int n=60;
void calc(){
for(int i=0;i<=n;i++){
res[i][0]=res[i][i]=1;
}
for(int i=2;i<=n;i++){
for(int j=0;j<=i/2;j++){
res[i][j]=res[i-1][j]+res[i-1][j-1];
res[i][j-i]=res[i][j];
}
}
}
ll c(ll n,ll m){
ll a=1;
for(ll i=1;i<=m;i++){
ans = ans*(n-m+i)/i;
}
return ans;
}