Cod sursa(job #727481)

Utilizator karlaKarla Maria karla Data 27 martie 2012 23:56:40
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
long p;
FILE*f=fopen("fact.in","r"),*g=fopen("fact.out","w");

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

int aparitie_5(long x){
   long n=1,fin=x,s=0;
   while(n<fin){
        s+=fin/n;
		n*=5;
   }
   return s;
}

int aparitie_2(long x){
	long n=1,fin=x,s=0;
   while(n<fin){
        s+=fin/n;
		n*=2;
   }
   return s;
}

int verificare(long x){
	long nr_2,nr_5;
   nr_2=aparitie_5(x);
   nr_5=aparitie_2(x);
   if(nr_2>p&&nr_5>p){return -1;}
   if((nr_2==p&&nr_5>=p)||(nr_2>=p&&nr_5==p)||(nr_2==p&&nr_5==p)){
      return 0;
   }
   return 1;
}

void aflare_n(){
	long x=1,y=p,mij;
   mij=(x+y)/2;
   while(1){
      x=verificare(mij);
	  if(x==-1){
	    y=mij; 
	  }
	  else if(x==0){break;}
	  else{
	     x=mij;
	  }
	  mij=(x+y)/2;
   }
   fprintf(g,"%ld ",mij);
	fclose(g);
}

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