Cod sursa(job #20401)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 21 februarie 2007 13:58:45
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#include <math.h>

int n;
long long sol, step;

long long calc(long long n)
{
    long long i, nr = 0;
    for (i = 5; i <= n; i *= 5)
        nr += n / i;
    return nr;
}

int main()
{
    freopen("fact.in","rt",stdin);
    freopen("fact.out","wt",stdout);
    scanf("%d", &n);
    if (n == 0)
    {
        printf("1\n");
        return 0;
    }
    for (sol = 0, step = (long long)1 << 60; step; step >>= 1)
        if (sol + step <= (long long)1 << 60 && calc(sol + step) < n)
            sol += step;
    if (calc(sol + 1) != n)
		printf("-1\n");
	else
        printf("%lld\n", sol + 1);
    return 0;
}