#include<cstdio>
#include<vector>
#include<cstring>
#include<cmath>
#define MAX 850
#define pi acos(-1)
#define e 2.7182818284590452353602874713527
using namespace std;
vector<long long int>prime;
bool arr[MAX];
void sieve()
{
long long int i,j,k;
k=sqrt(MAX);
for(i=3; i<=k; i+=2)
{
if(arr[i]==0)
{
for(j=i*i; j<MAX; j+=i+i)
{
arr[j]=1;
}
}
}
for(i=4; i<MAX; i=i+2)
{
arr[i]=1;
}
prime.push_back(2);
for(i=3; i<MAX; i=i+2)
{
if(arr[i]==0)
{
prime.push_back(i);
}
}
}
int main()
{
sieve();
long long int a,b,m,n,base,i,j,k,div,div1,counter,sum,MIN;
double c,result;
while(scanf("%lld%lld",&n,&base)==2)
{
if(n==0)
{
printf("0 1\n");
continue;
}
m=base;
MIN=2147483648;
k=prime.size();
for(i=0; i<k; i++)
{
if(base%prime[i]==0)
{
counter=0;
while(base%prime[i]==0)
{
base=base/prime[i];
counter++;
}
a=prime[i];
div=2;
sum=0;
while(div>=1)
{
div=n/a;
sum+=div;
a=a*prime[i];
}
div1=sum/counter;
if(div1<MIN)
{
MIN=div1;
}
if(base==1)
{
break;
}
}
}
c=double(m);
result=ceil(.5*log(2*pi)/log(c)+(n+0.5)*log(n)/log(c)-(n*log(e)/log(c))+(log(e)/log(c))/(12*n));
b=result;
printf("%lld %lld\n",MIN,b);
}
return 0;
}
#include<vector>
#include<cstring>
#include<cmath>
#define MAX 850
#define pi acos(-1)
#define e 2.7182818284590452353602874713527
using namespace std;
vector<long long int>prime;
bool arr[MAX];
void sieve()
{
long long int i,j,k;
k=sqrt(MAX);
for(i=3; i<=k; i+=2)
{
if(arr[i]==0)
{
for(j=i*i; j<MAX; j+=i+i)
{
arr[j]=1;
}
}
}
for(i=4; i<MAX; i=i+2)
{
arr[i]=1;
}
prime.push_back(2);
for(i=3; i<MAX; i=i+2)
{
if(arr[i]==0)
{
prime.push_back(i);
}
}
}
int main()
{
sieve();
long long int a,b,m,n,base,i,j,k,div,div1,counter,sum,MIN;
double c,result;
while(scanf("%lld%lld",&n,&base)==2)
{
if(n==0)
{
printf("0 1\n");
continue;
}
m=base;
MIN=2147483648;
k=prime.size();
for(i=0; i<k; i++)
{
if(base%prime[i]==0)
{
counter=0;
while(base%prime[i]==0)
{
base=base/prime[i];
counter++;
}
a=prime[i];
div=2;
sum=0;
while(div>=1)
{
div=n/a;
sum+=div;
a=a*prime[i];
}
div1=sum/counter;
if(div1<MIN)
{
MIN=div1;
}
if(base==1)
{
break;
}
}
}
c=double(m);
result=ceil(.5*log(2*pi)/log(c)+(n+0.5)*log(n)/log(c)-(n*log(e)/log(c))+(log(e)/log(c))/(12*n));
b=result;
printf("%lld %lld\n",MIN,b);
}
return 0;
}
0 comments: (+add yours?)
Post a Comment