Cod sursa(job #1493665)

Utilizator CollermanAndrei Amariei Collerman Data 29 septembrie 2015 19:20:50
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;
ofstream fout("fact.out");
ifstream fin("fact.in");

int n;

int f(int val)
{
    int r = 5, sol = 0;

    while(val / r) {
        sol += val / r;
        r *= 5;
    }

    return sol;
}

int main()
{
    fin >> n;

    if(!n) { fout << "1\n"; return 0; }

    int st = 1, dr = n * 5, mij = 1, sol = 0;

    while(st <= dr && !sol) {
        mij = st + (dr - st) / 2;
        if(f(mij) > n)
            dr = mij - 1;
        else if(f(mij) < n)
            st = mij + 1;
        else {
            sol = mij;
        }
    }

    if(!sol) fout << "-1\n";
    else fout << sol - sol % 5 << '\n';
    return 0;
}