Cod sursa(job #1891027)

Utilizator shantih1Alex S Hill shantih1 Data 23 februarie 2017 18:14:20
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int main () {
    
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    
    fin >> p;
    st = 1;     dr = 1000000000;
    //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;   }
    x = mid-1;
    while (x >= 5)
    {   nr_1 += x/5;   x /= 5;   }
    
    //fout << mid << " " << nr_1 << " " << nr0 << " " << nr2 << "\n";
    if (nr_1 != p && nr0 != p && nr2 != p)  mid = -1;
    else if (mid == 1)   mid = mid;
    else if (nr_1 == p)     mid--;
    else if (nr2 == p && nr0 != p)  mid++;
    fout << mid << "\n";
}