Cod sursa(job #790962)

Utilizator ericptsStavarache Petru Eric ericpts Data 22 septembrie 2012 17:36:46
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>

using namespace std;

long long unsigned int zero(long long unsigned int n)
{
    long long unsigned int i = 0,p5 = 5;
    while(n >= p5)
    {
        i+=n/p5;
        p5*=5;
    }
    return i;
}

int main()
{
    int p;
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&p);
    if(p == 0)
        printf("1\n");
    else
    {
        long long unsigned min = 0;
        long long unsigned max = 500000000;
        long long unsigned center = (min+max)/2;
        while(!(zero(center) <= p && zero(center+1) >p))
        {
            if(zero(center) > p)
                max = center;
            else
                min = center;

            center = (min+max)/2;
        }
        center = center - (center%5);
        if(zero(center) == p)
            printf("%llu",center);
        else
            printf("-1");
    }
    return 0;
}