Cod sursa(job #52451)

Utilizator pustiuRadu Zaharia pustiu Data 18 aprilie 2007 21:21:50
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>

long long N,P;

void citire ()
{
	FILE *in = fopen ("fact.in", "rt");
    fscanf (in,"%lld", &P);
    fclose(in);
}

long long f(int c)
{
	long long x=5;
    long long K=0;
    while(c/x>=1)
    {
    	K+=c/x;
        x*=5;
    }
    return K;
}

void calcul ()
{

	long long a=0, b=1000000000;
    long long c=(a+b)/2;
    long long fc=f(c);
    while(fc!=P && a!=b)
    {
    	if(fc>P)
        {
            b=c-1;
            c=(a+b)/2;
            fc=f(c);
        }
        else
        {
        	a=c+1;
			c=(a+b)/2;
            fc=f(c);
        }
    }
    if(a==b)
    	N=-1;
    else
    {
    	N=c;
    	while(N%5!=0)
        N--;
    }
        
}

void afisare()
{
	FILE *out = fopen ("fact.out", "wt");
    fprintf(out, "%lld", N);
    fclose(out);
}

int main ()
{
	citire();
    calcul();
    afisare();
    return 0;
}