Cod sursa(job #128223)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 26 ianuarie 2008 17:58:12
Problema Pascal Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<stdio.h>
long long int r,d,q2,q3,q5,up,down,cont,i;
int main()
{
	FILE *f,*g;f=fopen("pascal.in","r");g=fopen("pascal.out","w");
	fscanf(f,"%lld%lld",&r,&d);
	if(d==2)for(i=1;i<=r;i++)
	   {up=r+1-i;down=i;
	    while(up%2==0){q2++;up/=2;}
	    while(down%2==0){q2--;down/=2;}
	    if(q2>=1)cont++;
	   }
	if(d==3)
	 for(i=1;i<=r;i++)
	  {up=r+1-i;down=i;
	   while(up%3==0){q3++;up/=3;}
	   while(down%3==0){q3--;down/=3;}
	   if(q3>=1) cont++;
	  }
	if(d==4)
	 for(i=1;i<=r;i++)
	   {up=r+1-i;down=i;
	    while(up%2==0){q2++;up/=2;}
	    while(down%2==0){q2--;down/=2;}
	    if(q2>=2) cont++;
	   }
	if(d==5)
	 for(i=1;i<=r;i++)
	   {up=r+1-i;down=i;
	    while(up%5==0){q5++;up/=5;}
	    while(down%5==0){q5--;down/=5;}
	   if(q5>=1) cont++;
	   }
	if(d==6)
	  { if(r>4900000)
	    {fprintf(g,"*");fcloseall();return 0;}
	    for(i=1;i<=r;i++)
	    { up=r+1-i;down=i;
	      while(up%2==0){q2++;up/=2;}
	      while(down%2==0){q2--;down/=2;}
	      while(up%3==0){q3++;up/=3;}
	      while(down%3==0){q3--;down/=3;}
	      if((q2>=1)&&(q3>=1))cont++;
	    }
	  }
	fprintf(g,"%lld\n",cont);
	fcloseall();
	return 0;
}