#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define syosu(x) fixed< P; typedef pair pdd; typedef pair pll; typedef vector vi; typedef vector vvi; typedef vector vd; typedef vector vvd; typedef vector vl; typedef vector vvl; typedef vector vc; typedef vector vvc; typedef vector vs; typedef vector vb; typedef vector vvb; typedef vector

vp; typedef vector vvp; typedef vector vpll; typedef pair pip; typedef vector vip; const int inf=1<<28; const ll INF=1ll<<60; const long double pi=acos(-1); const long double eps=1e-8; const ll mod=1e9+7; const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; const long double H=1.0/2; const long double ten=logl(10); ll n,m; ll f(ll x){ ll X=1,res=0; do{ X*=x; res+=n/X; }while(X>n>>m; long double N=n,x=N*logl(N)-N+H*logl(2.0l*(long double)pi*N)+1.0l/12.0l/N-1.0l/360.0l/N/N/N; // cout << syosu(100) << x << endl; x/=ten; ll M=INF,m_=m; for(ll i=2;i*i<=m_;i++) if(m_%i==0){ ll num=0; while(m_%i==0){ m_/=i; num++; } M=min(M,f(i)/num); } if(m_!=1) M=min(M,f(m_)); if(M!=INF) x-=(long double)M*logl(m)/ten; ll d=(ll)(x+eps); x-=d; // cout << syosu(10) << x << endl; for(int i=1;i<1000000;i++){ long double tmp=(long double)i/100000.0; if(x