思路:C(2n,n)=(2n)!/((n!)^2),计算分母可以被p整除的次数和分子可以被p整除的次数,然后相减就行了
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
int main(){
int T;
scanf("%d",&T);
while(T--){
ll n,p;
scanf("%lld%lld",&n,&p);
ll ans=0;
ll tmp=n;
ll tp=p;
ll rec=0;
while(tp<=tmp*2){
ans=ans+tmp*2/tp;
rec=rec+tmp/tp;
tp*=p;
}
rec*=2;
printf("%lld\n",ans-rec);
}
return 0;
}