Cod sursa(job #714913)

Utilizator iarbaCrestez Paul iarba Data 16 martie 2012 12:30:55
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
FILE *f,*g;
long n,exp,i,j,p,tot,r,d,tot2,tot3,tot5,tot2f,tot3f,tot5f;
int main()
{
	f=fopen("pascal.in","r");
	g=fopen("pascal.out","w");
	fscanf(f,"%ld%ld",&n,&d);
	p=2;tot2f=0;
	while(n/p){
		tot2f+=n/p;
		p*=2;
	          }
	p=3;tot3f=0;
	while(n/p){
		tot3f+=n/p;
		p*=3;
	          }
	p=5;tot5f=0;
	while(n/p){
		tot5f+=n/p;
		p*=5;
	          }
	for(i=0;i<=n/2;i++){
		 j=n-i;
		 p=2;tot2=tot2f;
		 while(j/p){
			 tot2=tot2-(i/p)-(j/p);
			 p*=2;
		           }
		 p=3;tot3=tot3f;
		 while(j/p){
			 tot3=tot3-(i/p)-(j/p);
			 p*=3;
		           }
		 p=5;tot5=tot5f;
		 while(j/p){
			 tot5=tot5-(i/p)-(j/p);
			 p*=5;
		           }
		 if(d==2){
			 if(tot2>0){r+=2;if(i==j){r--;}}
		         }
		 if(d==3){
			 if(tot3>0){r+=2;if(i==j){r--;}}
		         }
		 if(d==4){
			 if(tot2>1){r+=2;if(i==j){r--;}}
		         }
		 if(d==5){
			 if(tot5>0){r+=2;if(i==j){r--;}}
		         }
		 if(d==6){
			 if((tot2>0)&&(tot3>0)){r+=2;if(i==j){r--;}}
		         }
					   }
	fprintf(g,"%ld",r);
	fclose(f);fclose(g);
return 0;
}