Cod sursa(job #248615)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 26 ianuarie 2009 11:07:52
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
# include <stdio.h>
int D,p[7];
long long R;
int put(long long k, int d)
{
  long x;
  x=R-k;
  while (x%d==0) { x=x/d; p[d]++;}
  x=k+1;
  while (x%d==0) { x=x/d; p[d]--;}
  return p[d];
}
int numar(long long k)
{
  int nr=0;
  switch (D) {
    case 2: nr=put(k,2)>=1; break;
    case 3: nr=put(k,3)>=1; break;
    case 4: nr=put(k,2)>=2; break;
    case 5: nr=put(k,5)>=1; break;
    case 6: nr=(put(k,2)>=1 && put(k,3)>=1); break;
  }
  return nr;
}
int main(){
  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("%ld",nr);
  return 0;
}