Pagini recente » Cod sursa (job #2617599) | Cod sursa (job #1835120) | Cod sursa (job #970632) | Cod sursa (job #1822802) | Cod sursa (job #240732)
Cod sursa(job #240732)
#include <stdio.h>
#define DIM 5005
int a[DIM],b[DIM];
int r,d,nrt;
int fact (int x,int d)
{
int s=0;
while (x/d)
{
s+=x/d;
x/=d;
}
return s;
}
int main ()
{
freopen ("pascal.in","r",stdin);
freopen ("pascal.out","w",stdout);
int i;
scanf ("%d%d",&r,&d);
if (d==2 || d==3 || d==5)
{
for (i=1; i<=r; ++i)
a[i]=fact (i,d);
if (r%2==0)
{
for (i=1; i<r/2; ++i)
if (a[r]-a[i]-a[r-i]>0)
nrt+=2;
if (a[r]-a[r/2]-a[r-r/2]>0)
++nrt;
}
else
{
for (i=1; i<=r/2; ++i)
if (a[r]-a[i]-a[r-i]>0)
nrt+=2;
}
}
else if (d==4)
{
for (i=1; i<=r; ++i)
a[i]=fact (i,2);
if (r%2==0)
{
for (i=1; i<r/2; ++i)
if (a[r]-a[i]-a[r-i]>1)
nrt+=2;
if (a[r]-a[r/2]-a[r-r/2]>1)
++nrt;
}
else
{
for (i=1; i<=r/2; ++i)
if (a[r]-a[i]-a[r-i]>1)
nrt+=2;
}
}
else if (d==6)
{
for (i=1; i<=r; ++i)
{
a[i]=fact (i,2);
b[i]=fact (i,3);
}
if (r%2==0)
{
for (i=1; i<r/2; ++i)
if (a[r]-a[i]-a[r-i]>0 && b[r]-b[i]-b[r-i]>0)
nrt+=2;
if (a[r]-a[r/2]-a[r-r/2]>0 && b[r]-b[r/2]-b[r-r/2]>0)
++nrt;
}
else
{
for (i=1; i<=r/2; ++i)
if (a[r]-a[i]-a[i-r]>0 && b[r]-b[i]-b[r-i]>0)
nrt+=2;
}
}
printf ("%d",nrt);
return 0;
}