Cod sursa(job #1890987)

Utilizator shantih1Alex S Hill shantih1 Data 23 februarie 2017 17:36:56
Problema Factorial Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

int x, nr0, p, st, mid, dr, i, nr2;

int main () {
    
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    
    fin >> p;
    st = 1;     dr = 1000;
    //fout << st << " " << mid << " " << dr << "\n";
    while (st <= dr)
    {
        mid = st + (dr-st)/2;
        x = mid;    nr0 = 0;
        while (x >= 5)
        {
            nr0 += x/5;
            x /= 5;
        }
        //fout << st << " " << mid << " " << dr << "    " << nr0 << "\n";
        if (nr0 >= p)    dr = mid-1;
        if (nr0 < p)    st = mid+1;
    }
    
    x = mid;    nr0 = 0;
    while (x >= 5)
    {
        nr0 += x/5;
        x /= 5;
    }
    x = mid+1;
    while (x >= 5)
    {
        nr2 += x/5;
        x /= 5;
    }
    if (nr0 == p)   fout << mid << "\n";
    if (nr0 != p && nr2 == p)   fout << mid+1 << "\n";
    if (nr0 != p && nr2 != p)   fout << -1 << "\n";
}