Cod sursa(job #158994)

Utilizator pandaemonAndrei Popescu pandaemon Data 13 martie 2008 22:00:35
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
#include<iostream.h>
#define RMAX 5000001
		       /// f: R / (C*(R-C))
long r,aux,i,j,var;
int d,doi[RMAX],trei[RMAX],cinci[RMAX],sol;

int inline cond(int x2,int x3,int x5)
{if(d==2 && x2>0) return 1;

 if(d==3 && x3>0) return 1;

 if(d==4 && x2>1) return 1;

 if(d==5 && x5>0) return 1;

 if(d==6 && x2>0 && x3>0) return 1;

 return 0;}


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

 scanf("%ld %d",&r,&d);

 if(d%2==0) 
 for(i=1;i<=r;i++)
 {aux=i; var=0;
 while( (aux&1)==0 ) {aux=(aux>>1); var++;}
 for(j=i;j<=r;j++) doi[j]+=var;  }


 if(d%3==0)
 for(i=1;i<=r;i++)
 {aux=i; var=0;
  while(aux%3==0) {aux/=3; var++;}
 for(j=i;j<=r;j++) trei[j]+=var;  }


 if(d%5==0)
 for(i=1;i<=r;i++)
 {aux=i; var=0;
  while(aux%5==0) {aux/=5; var++;}
 for(j=i;j<=r;j++) cinci[j]+=var;  }


 for(i=0;i<=r;i++)
 {int x2=doi[r]-doi[r-i]-doi[i];
  int x3=trei[r]-trei[r-i]-trei[i];
  int x5=cinci[r]-cinci[r-i]-cinci[i];

  if( cond(x2,x3,x5)==1 ) sol++; }

  printf("%d\n",int(sol));   }