Cod sursa(job #248623)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 26 ianuarie 2009 11:33:50
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
# include <stdio.h>
long p[7]; int D;
long long R;
int numar(long long k)
{
  int nr=0;
  long long x;
  x=R-k;
  while (x%2==0) { x=x/2; p[2]++;}
  while (x%3==0) { x=x/3; p[3]++;}
  while (x%5==0) { x=x/5; p[5]++;}
  x=k+1;
  while (x%2==0) { x=x/2; p[2]--;}
  while (x%3==0) { x=x/3; p[3]--;}
  while (x%5==0) { x=x/5; p[5]--;}
  switch (D) {
    case 2: nr=p[2]>=1; break;
    case 3: nr=p[3]>=1; break;
    case 4: nr=p[2]>=2; break;
    case 5: nr=p[5]>=1; break;
    case 6: nr=(p[2]>=1 && p[3]>=1); break;
  }
  return nr;
}
int main(){
  long long k, nr=0;
  freopen("pascal.in", "r", stdin);
  freopen("pascal.out", "w", stdout);
  scanf("%lld %d",&R,&D);
  for (k=0;k<(R+1)/2-1;k++)
    nr=nr+numar(k);
  nr=nr*2;
  if (R%2==0) nr=nr+numar(k);
  printf("%lld",nr);
  return 0;
}