Pagini recente » Cod sursa (job #851790) | Cod sursa (job #2260218) | Cod sursa (job #2492018) | Cod sursa (job #1787649) | Cod sursa (job #19712)
Cod sursa(job #19712)
#include<stdio.h>
long n,m,p,i,s,j,k,var1,var2;
int afisare()
{
printf("%ld \n",k);
return 0;
}
long descomp(long p,long k)
{
long u=k,nr=0;
while (p/u>0)
{
nr+=p/u;
u*=k;
}
return nr;
}
int caz2()
{
long aux2,var2,aux;
var1=descomp(n,2);
var2=descomp(n,3);
for(j=0;j<n;j++)
{
aux=var1;
aux2=var2;
aux-=descomp(n-j,2);
aux2-=descomp(n-j,3);
aux-=descomp(j,2);
aux2-=descomp(j,3);
if ((aux>0)&&(aux2>0)) k++;
}
return 0;
}
int caz3()
{
long i=0,u,aux;
u=2;
while (n/u>0)
{
i++;
s+=n/u;
u*=2;
}
for(j=0;j<n;j++)
{
aux=s;
aux-=descomp(n-j,2);
aux-=descomp(j,2);
if (aux>1) k++;
}
return 0;
}
int caz1()
{
long i=0,u,aux;
u=m;
while (n/u>0)
{
i++;
s+=n/u;
u*=m;
}
for(j=0;j<n;j++)
{
aux=s;
aux-=descomp(n-j,m);
aux-=descomp(j,m);
if (aux>0) k++;
}
return 0;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%ld %ld",&n,&m);
if ((m==2)||(m==3)||(m==5)) caz1();
if (m==6) caz2();
if (m==4) caz3();
afisare();
return 0;
}