Cod sursa(job #727503)

Utilizator karlaKarla Maria karla Data 28 martie 2012 00:22:07
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
long long p;
FILE*f=fopen("fact.in","r"),*g=fopen("fact.out","w");

void citire(){
    fscanf(f,"%lld ",&p);
	fclose(f);
}

int aparitie_5(long long x){
   long n=5,fin=x,s=0;
   while(n<=fin){
        s+=fin/n;
		n*=5;
   }
  // fprintf(g,"%ld %ld ",x,s);
   return s;
}


int verificare(long long x){
	long nr_5;
   nr_5=aparitie_5(x);
   if(nr_5>p){return -1;}
   if((nr_5==p)){
      return 0;
   }
   return 1;
}

void aflare_n(){
	long long x=1,y=p,mij,l;
	 if(p==0){fprintf(g,"1");return;}
	 else{
   while(x<=y){
	   mij=(x+y)/2;
      l=verificare(mij*5);
	  if(l==0){
		  fprintf(g,"%lld ",mij*5);
		  return;
	  }
	  else{
		  if(l==-1){
	        y=mij-1; 
	       }
		  else{
	         x=mij+1;
		  }
	  }
   }
	 }
	 fprintf(g,"-1");
}

int main(){
	citire();
	aflare_n();
	fclose(g);
return 0;
}