Cod sursa(job #324989)

Utilizator aladinaladin aladinn aladin Data 18 iunie 2009 14:05:52
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>

int expp(int x, int y)//de cate ori apare x in y!
{int nr=0;
 while (y%x==0) {nr++;y/=x;}
 return nr;
} 

int main()
{int nr2,nr3,nr5,d,i,nr,j;
 freopen("pascal.in","r",stdin);
 freopen("pascal.out","w",stdout);
 scanf("%d %d",&i,&d);
 
 // printf("%d %d\n",i,v[i]);
 
 nr2=0;nr3=0;nr5=0;
 for (j=1,nr=0;j<=(i-1)/2;j++)
  if (d==2) {nr2+=expp(2,i-j+1)-expp(2,j);if (nr2>0) nr++;} else
  if (d==3) {nr3+=expp(3,i-j+1)-expp(3,j);if (nr3>0) nr++;} else 
  if (d==4) {nr2+=expp(2,i-j+1)-expp(2,j);if (nr2>1) nr++;} else
  if (d==5) {nr5+=expp(5,i-j+1)-expp(5,j);if (nr5>0) nr++;} else	  
  if (d==6) {nr3+=expp(3,i-j+1)-expp(3,j); nr2+=expp(2,i-j+1)-expp(2,j); if ((nr2>0)&& (nr3>0)) nr++;}
 
  nr*=2;
  if  ((i%2)==0)	 
  {j=(i-1)/2+1;
  if (d==2) {nr2+=expp(2,i-j+1)-expp(2,j);if (nr2>0) nr++;} else
  if (d==3) {nr3+=expp(3,i-j+1)-expp(3,j);if (nr3>0) nr++;} else 
  if (d==4) {nr2+=expp(2,i-j+1)-expp(2,j);if (nr2>1) nr++;} else
  if (d==5) {nr5+=expp(5,i-j+1)-expp(5,j);if (nr5>0) nr++;} else	  
  if (d==6) {nr3+=expp(3,i-j+1)-expp(3,j);
             nr2+=expp(2,i-j+1)-expp(2,j); if ((nr2>0)&& (nr3>0)) nr++;}
  }
  printf("%d",nr);
 
 return 0;

}