Cod sursa(job #862947)

Utilizator sfarma_pietreOctavian Ganea sfarma_pietre Data 23 ianuarie 2013 01:46:07
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <math.h>
#include <map>
#include <stdlib.h>
#include <sstream>
#include <stdio.h>
using namespace std;
#define PI 3.1415926535897932384626433832795

#define MAX 1001

int main() {
    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);


    long long n, p, sum, aux;

    scanf("%I64d", &p);
    if (p == 0) {
        cout << "1";
        return 0;
    }
    
    long long start = 4*p / 5, end = 5*p;
    
    for (; ;) {
        n = (start + end) >> 1;
        sum = 0;
        aux = n / 5;
        while(aux) {
            sum += aux;
            aux /= 5;
        }
                
        if (end - start <= 1) {
            sum = 0;
            aux = end / 5;
            while(aux) {
                sum += aux;
                aux /= 5;
            }            
            if (sum == p) printf("%I64d", end);
            else printf("-1");
            return 0;
        }
        
        if (sum < p) {
            start = n;
        }
        if (sum >= p) {
            end = n;
        }
    }

    return 0;
}