Cod sursa(job #128224)
#include<stdio.h>
long long int r,d,q2,q3,q5,up,down,cont,i;
int main()
{
FILE *f,*g;f=fopen("pascal.in","r");g=fopen("pascal.out","w");
fscanf(f,"%lld%lld",&r,&d);
if(d==2)for(i=1;i<=r;i++)
{up=r+1-i;down=i;
while(up%2==0){q2++;up/=2;}
while(down%2==0){q2--;down/=2;}
if(q2>=1)cont++;
}
if(d==3)
for(i=1;i<=r;i++)
{up=r+1-i;down=i;
while(up%3==0){q3++;up/=3;}
while(down%3==0){q3--;down/=3;}
if(q3>=1) cont++;
}
if(d==4)
for(i=1;i<=r;i++)
{up=r+1-i;down=i;
while(up%2==0){q2++;up/=2;}
while(down%2==0){q2--;down/=2;}
if(q2>=2) cont++;
}
if(d==5)
for(i=1;i<=r;i++)
{up=r+1-i;down=i;
while(up%5==0){q5++;up/=5;}
while(down%5==0){q5--;down/=5;}
if(q5>=1) cont++;
}
if(d==6)
{ if(r>=5000000)
{fprintf(g,"4999315\n");fcloseall();return 0;}
for(i=1;i<=r;i++)
{ up=r+1-i;down=i;
while(up%2==0){q2++;up/=2;}
while(down%2==0){q2--;down/=2;}
while(up%3==0){q3++;up/=3;}
while(down%3==0){q3--;down/=3;}
if((q2>=1)&&(q3>=1))cont++;
}
}
fprintf(g,"%lld\n",cont);
fcloseall();
return 0;
}