n,m=map(int,input().split()) F=[] x=m for i in range(2,10**6): if x%i==0: F.append(i) while x%i==0: x//=i if x!=1: F.append(x) A=[] for f in F: s=0 for i in range(1,100): k=n//(f**i) if k==0: break else: s+=k A.append(s) a=min(A) if n<=100: ANS=1 for i in range(1,n+1): ANS*=i ANS//=(m**a) #print(ANS) S=str(ANS) S=S[0]+"."+S[1:] print(S,end="") print("e",end="") print(len(S)-2) else: from math import pi,e,sqrt,log10 ANS=log10(sqrt(2*pi*n))+n*log10(n/e) - a* log10(m) u=int(ANS) ANS-=u S=10**ANS print(S,end="") print("e",end="") print(u)