#include <stdio.h>
#include <math.h>
#define PI 3.14159265
#define E 2.718281828459
int numofdigit(int n, int b)
{
double t;
int i;
t = 0.0;
for(i = 2; i <= n; i++){
t += log10(i)/log10(b);
}
t += 1E-10;
printf("%lf\n", t);
return (int)t+1;
}
int numofzero(int n, int b, int prime[])
{
int i, j, t, m, k, min, a[200], p[200], d[200];
t = b;
for(i = 0; i < 200; i++){
a[i] = 0;
d[i] = 0;
}
for(i = 0; i < 200 && t > 1; i++){
while(t % prime[i] == 0){
a[i]++;
t /= prime[i];
}
}
k = 0;
m = 0;
for(j = 0; j < i; j++){
if(a[j] != 0){
p[k++] = prime[j];
a[m++] = a[j];
}
}
for(i = 2; i <= n; i++){
t = i;
for(j = 0; j < m && t > 1; j++){
while(t % p[j] == 0){
d[j]++;
t /= p[j];
}
}
}
min = d[0]/a[0];
for(i = 1; i < m; i++){
t = d[i]/a[i];
if(min > t)
min = t;
}
return min;
}
int main()
{
int i, j;
int n, b;
int prime[1000];
for(i = 0; i < 1000; i++)
prime[i] = 0;
for(i = 2; i*i < 1000; i++){
if(prime[i] == 0){
for(j = i*i; j < 1000; j+= i)
prime[j] = 1;
}
}
j = 0;
for(i = 2; i < 1000; i++){
if(prime[i] == 0)
prime[j++] = i;
}
while(scanf("%d %d", &n, &b) != EOF){
printf("%d %d\n", numofzero(n, b, prime), numofdigit(n, b));
}
return 0;
}