Pagini recente » Cod sursa (job #2269402) | Cod sursa (job #1636513) | Cod sursa (job #2118683) | Cod sursa (job #80742) | Cod sursa (job #594599)
Cod sursa(job #594599)
#include<stdio.h>
long long sol,r,d,up[6],down[6];
void desc(long long a,long long v[])
{int p;
p=0;
if (d==6)
{ while (a%2==0) { p++; a/=2; }
v[2]+=p; p=0;
while (a%3==0) { p++; a/=3; }
v[3]+=p; }
else if (d==4)
{ while (a%2==0) { p++; a/=2; }
v[2]+=p; }
else
{ while (a%d==0) { p++; a/=d; }
v[d]+=p; }
}
int main()
{long i,j,nr,lim,e;
FILE *in,*out;
in=fopen("pascal.in","r"); out=fopen("pascal.out","w");
fscanf(in,"%ld%ld",&r,&d);
nr=r+1;
if ((r-1)%2==0) lim=(r-1)/2;
else lim=(r-1)/2+1;
for (i=1;i<=lim;i++)
{ nr--;
desc(nr,up);
desc(i,down); e=0;
if (d==4)
{
if (up[2]-down[2]>=2)
{
sol+=2; e=1;
}
}
else if (d==6) { if (up[2]-down[2]>=1 && up[3]-down[3]>=1) { sol+=2; e=1; } }
else if (up[d]-down[d]>=1) { sol+=2; e=1; }
if (e && i==(r-1)/2+1) sol--;
}
fprintf(out,"%ld\n",sol);
fclose(in); fclose(out);
return 0; }