Cod sursa(job #229255)

Utilizator FlorianFlorian Marcu Florian Data 9 decembrie 2008 19:19:10
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
FILE*f=fopen("pascal.in","r");
FILE*g=fopen("pascal.out","w");
int n,d;
int fct(int n, int d) //la ce putere apare d in descomp lu n!
 {
  int p1=0,p=d;
  while(n/p)
   {
   p1+=n/p;
   p=p*d;
   }
  return p1;
 }
int main()
 {
 fscanf(f,"%d%d",&n,&d);
 int i,p=1,p1,p2,p3,p4,p5,p6,sol=0;
 if(d!=6 && d!=4)
  {
  p1=fct(n,d);
  for(i=0;i<=n;++i)
   {
   p2=fct(i,d);
   p3=fct(n-i,d);
   if(p1 > p2+p3) ++sol;
   }
  }
 else if(d==6)
  {
  p1=fct(n,3);
  p2=fct(n,2);
  for(i=0;i<=n;++i)
   {
   p3=fct(i,2);
   p4=fct(i,3);
   p5=fct(n-i,2);
   p6=fct(n-i,3);
   
   if(p1 > p4+p6 && p2> p3+p5) ++sol;
   }
  }
 else if(d==4)
  {
  p1=fct(n,2);
  for(i=0;i<=n;++i)
   {
   p2=fct(i,2);
   p3=fct(n-i,2);
   if(p1 > p2+p3 && p1-p2-p3>1) ++sol;
   }
  }
 fprintf(g,"%d\n",sol);
 return 0;
 }