题意:
问一个数能被某个素数整除几次。
题解:
首先这个题给出了着这个数的大小C(2n,n);
也就是(2N)! / (N!*N!);
所以易得 2n/p-2[n/p]+2n/p^2-2[n/p^2].....
因为最大 p^t=2n
so: t=logp(2n);
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
typedef long long LL;
using namespace std;
int main(){
int T;
cin>>T;
LL n,p;
while(T--){
cin>>n>>p;
double t=log10(2.0*n)/log10(p);
LL s=(int)t;
int cnt=1,sum=0;
for(int i=1;i<=t;++i){
cnt*=p;
sum+=2*n/cnt-2*(int)(n/cnt);
}
cout<<sum<<endl;
}
return 0;
}