Cod sursa(job #268517)

Utilizator shnakoVlad Schnakovszki shnako Data 1 martie 2009 12:56:42
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <stdio.h>
FILE *f, *g;
long x=0, y, z, l, sw, n, r, d, a, b, c, t, j, h, k, u;
int main(void)
{
f=fopen("pascal.in", "r");
g=fopen("pascal.out", "w");
fscanf (f, "%ld%ld", &r, &d);
if (r%2==1)
	{
   sw=0;
	n=(r-1)/2;
   }
else
	{
   sw=1;
	n=r/2;
   }
for (j=1;j<=n;j++)
	{
   x=y=z=a=b=c=0;
   l=1;
   for (h=1;h<=23;h++)
		{
      l*=2;
      if (l>r&&l>(r-j)&&l>j)
      	break;
      x+=r/l;
      y+=(r-j)/l;
      z+=j/l;
      }

   a=x-y-z;
   x=y=z=0;
   l=1;
   for (h=1;h<=14;h++)
		{
      l*=3;
      if (l>r&&l>(r-j)&&l>j)
      	break;
      x+=r/l;
      y+=(r-j)/l;
      z+=j/l;
      }
   b=x-y-z;
   x=y=z=0;
   l=1;
   for (h=1;h<=6;h++)
		{
      l*=5;
      if (l>r&&l>(r-j)&&l>j)
      	break;
      x+=r/l;
      y+=(r-j)/l;
      z+=j/l;
      }
   c=x-y-z;
   if (j==n)
   	u=k;
   if (d==2&&a)
      {
   	k++;
      continue;
      }
   if (d==3&&b)
      {
   	k++;
      continue;
      }
   if (d==4&&a>=2)
      {
   	k++;
      continue;
      }
   if (d==5&&c)
      {
   	k++;
      continue;
      }
	if (d==6&&a&&b)
      {
   	k++;
      continue;
      }
   }
if (!k)
	{
   fprintf(g, "0");
   fcloseall();
   return 0;
   }
if (!sw)
	fprintf(g, "%ld", 2*k);
else
	if (u==k)
   	fprintf(g, "%ld", 2*k);
	else
		fprintf(g, "%ld", 2*k-1);
fcloseall();
return 0;
}