Cod sursa(job #1925721)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 13 martie 2017 16:59:42
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>
int p(int x,int div){
  int p=0;
  while(x%div==0)
  {
      p++;
      x/=div;
  }
  return p;
}
int main()
{
  FILE*fin,*fout;
  int ci,d,p2,p3,p5,i,nrd,j;
  fin=fopen("pascal.in","r");
  fscanf(fin,"%d%d",&i,&d);
  ci=i;
  nrd=0;
  p2=p3=p5=0;
  for(j=0; j<i/2-1+ci%2; j++){
    p2+=p(i-j,2);
    p2-=p(j+1,2);
    if(d==2 && p2>=1)
      nrd++;
    if(d==4 && p2>=2)
      nrd++;
    p3+=p(i-j,3);
    p3-=p(j+1,3);
    if(d==3 && p3>=1)
       nrd++;
    if(d==6 && p2>=1&&p3>=1)
       nrd++;
    p5+=p(i-j,5);
    p5-=p(j+1,5);
    if(d==5 && p5>=1)
      nrd++;
  }
  nrd*=2;
  if(ci%2==0){
    p2+=p(i-j,2);
    p2-=p(j+1,2);
    if(d==2 && p2>=1)
      nrd++;
    if(d==4 && p2>=2)
      nrd++;
    p3+=p(i-j,3);
    p3-=p(j+1,3);
    if(d==3 && p3>=1)
       nrd++;
    if(d==6 && p2>=1&&p3>=1)
       nrd++;
    p5+=p(i-j,5);
    p5-=p(j+1,5);
    if(d==5 && p5>=1)
      nrd++;
  }
  fclose(fin);
  fout=fopen("pascal.out","w");
  fprintf(fout,"%d",nrd);
  fclose(fout);
  return 0;
}