Pagini recente » Cod sursa (job #188536) | Cod sursa (job #11640) | Cod sursa (job #1497994) | Cod sursa (job #142492) | Cod sursa (job #240746)
Cod sursa(job #240746)
#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==0 && x)
{
s++;
x/=d;
}
return s;
}
int main ()
{
freopen ("pascal.in","r",stdin);
freopen ("pascal.out","w",stdout);
int i;
scanf ("%d%d",&r,&d);
if (r%2==0)
{
for (i=1; i<=r/2; ++i)
if (d==2 || d==3 ||d==5)
{
a[i]=a[i-1]+fact (r-i+1,d)-fact (i,d);
if (a[i]>0)
++nrt;
if (i==r/2)
{
nrt*=2;
nrt-=2;
a[i+1]=a[i]+fact (r-i+2,d)-fact (i+1,d);
if (a[i+1]>0)
++nrt;
}
}
else if (d==4)
{
a[i]=a[i-1]+fact (r-i+1,2)-fact (i,2);
if (a[i]>1)
++nrt;
if (i==r/2)
{
nrt*=2;
nrt-=2;
a[i+1]=a[i]+fact (r-i+2,2)-fact (i+1,2);
if (a[i+1]>1)
++nrt;
}
}
else if (d==6)
{
a[i]=a[i-1]+fact (r-i+1,2)-fact (i,2);
b[i]=b[i-1]+fact (r-i+1,3)-fact (i,3);
if(a[i]>0 && b[i]>0)
++nrt;
if(i==r/2)
{
nrt*=2;
nrt-=2;
a[i+1]=a[i]+ fact (r-i+2,2)-fact (i+1,2);
b[i+1]=b[i]+ fact (r-i+2,3)-fact (i+1,3);
if(a[i+1]>0 && b[i+1]>0)
++nrt;
}
}
}
else
{
for (i=1; i<=r/2; ++i)
if (d==2 || d==3 ||d==5)
{
a[i]=a[i-1]+fact (r-i+1,d)-fact (i,d);
if (a[i]>0)
++nrt;
}
else if (d==4)
{
a[i]=a[i-1]+fact (r-i+1,2)-fact (i,2);
if (a[i]>1)
++nrt;
}
else if (d==6)
{
a[i]=a[i-1]+fact (r-i+1,2)-fact (i,2);
b[i]=b[i-1]+fact (r-i+1,3)-fact (i,3);
if(a[i]>0 && b[i]>0)
++nrt;
}
nrt*=2;
}
printf ("%d",nrt);
return 0;
}