拿了一个cf大佬的代码,看不太懂,先码住
代码:
#include<iostream>
#include<cctype>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#define N 1100000
#define L 1000000
#define eps 1e-7
#define inf 1e9+7
#define db double
#define ll long long
#define ldb long double
using namespace std;
inline ll read()
{
char ch=0;
ll x=0,flag=1;
while(!isdigit(ch)){ch=getchar();if(ch=='-')flag=-1;}
while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*flag;
}
ll ans=1e18+7;
ll sum(ll a,ll b)
{
ll cnt=0;
for(a/=b;a;a/=b) cnt+=a;
return cnt;
}
int main()
{
ll n=read(),k=read();
for(ll i=2;i*i<=k;++i)
{
ll cnt=0;
while(k%i==0)++cnt,k/=i;
if(cnt)ans=min(ans,sum(n,i)/cnt);
}
if(k>1)ans=min(ans,sum(n,k));
printf("%lld",ans);
return 0;
}