Cod sursa(job #1533816)

Utilizator RitardoVlad Ciucescu Ritardo Data 23 noiembrie 2015 00:03:27
Problema Factorial Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

int trzeros(int n)
{
    int zeros=0;
    for(int p=5; p<=n; p*=5)
       zeros+=n/p;
    return zeros;
}

int findn(int l, int r, int p)
{
    if(p==0)
        return 1;
    else
    {
        int mid, paux;
        while(l<r)
        {
            mid=(l+r)/2;
            paux=trzeros(mid);
            if (paux>p)
                r=mid-1;
            else
                l=mid+1;
        }
        return mid-mid%5;
    }
}

int main()
{
    FILE *in=fopen("fact.in","r");
    int p;
    fscanf(in,"%d",&p);
    fclose(in);
    int n=findn(0,810000000,p);
    FILE *out=fopen("fact.out","w");
    if (trzeros(n)!=p)
        fprintf(out,"-1");
    else
        fprintf(out,"%d",n);
    fclose(out);
    return 0;
}