10061

没印象了,路过的提个醒

#include<stdio.h>
#include<math.h>
double bits(int n,int base)
{
 double bit=0;
 while(n>0)
 {
  bit+=log10(n);
  n--;
 }
 return ceil(bit/log10(base)+1e-10);
}
int _tail(int n,int base)
{
 int i,j,k,num1,num2,min=10000000;
 for(i=2;i<=base;i++)
 {
  
  if(base%i==0)
  {
   num1=0;
      num2=0;
      while(base%i==0)
   {
    base/=i;
       num1++;
   }
      for(j=2;j<=n;j++)
      for(k=j;k%i==0;k/=i)
       num2++;
      if(num2/num1<min)
       min=num2/num1;
  }
 }
 return min;
}
int main()
{
 int tail,bit,n,base;
 while(scanf("%d%d",&n,&base)!=EOF)
 {
  if(n==0)
  {
   printf("0 1\n");
   continue;
  }
  bit=(int)bits(n,base);
  tail=_tail(n,base);
  printf("%d %d\n",tail,bit);
 }
 return 0;
}

你可能感兴趣的:(10061)