Cod sursa(job #127140)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 23 ianuarie 2008 14:46:05
Problema Pascal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>

int r, d, p[6], nr, v[5000];

int desc(int x,int d)
{
   int contor = 0, i, c;
   for (i = 2; i <= x; i++)
   {
     c = d;
     while (x / c)
     {
	 contor += (x/c);
	 c *= d;
     }
   }
   return contor;
}

int main()
{
   freopen("pascal.in","r",stdin);
   freopen("pascal.out","w",stdout);

   int i, j, c, contor = 0, ok, x;
   scanf("%d %d", &r, &d);
   x = r;
   for (i = 2; i <= 5; i++)
      if (x % i ==0 )  while (x % i == 0) p[i]++, x/=i;
   r++;
   for (i = 2; i <= r / 2; i++)
   {
      for (j = 2; j <= i; j++)
      {
	 c = 0; ok = 1;
	 if (c += desc(r,j))
	 c -= (desc(r-i,j));
	 c -= (desc(i,j));
	 if (c <= p[j]) {ok = 0; break;}
      }
      if (ok) contor++;
   }
   contor *= 2;

   if (r % 2)
   {  i = r / 2 + 1;
      for (j = 2; j <= i; j++)
      {
	 c = 0; ok = 1;
	 if (c += desc(r,j))
	 c -= (desc(r-i,j));
	 c -= (desc(i,j));
	 if (c < 0) {ok = 0; break;}
      }
      if (ok) contor++;
   }


   printf("%d\n",contor);
   return 0;
}