Cod sursa(job #2615359)

Utilizator robertnanu_fmiNanu Robert-Ionut robertnanu_fmi Data 14 mai 2020 14:44:01
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int const Max=1e8;
int M=Max,p;
int numar_zerouri(int n)
{
    int p=5;
    int s=0;
    while(n/p)
    {
        s+=n/p;
        p*=5;
    }
    return s;
}
void caut_binara(int x, int st, int dr, int& M)
{
    if(st<=dr)
    {
        int p=5;
        int mij=(st+dr)/2, s=numar_zerouri(mij);
        if(s==x)  ///daca am numarul corect de zerouri
        {
            if(M>mij)
                M=mij;
            while(numar_zerouri(mij-1)==x)   ///gasesc cel mai mic numar, care sa respecte cerintele
            {
                mij--;
                M=mij;
            }
        }
        else if (s>x) caut_binara(x, st, mij-1, M);
        else caut_binara(x, mij+1, dr, M);
    }
}
int main()
{
    f>>p;
    if(p==0)
    {
        g<<1;
        return 0;
    }
    caut_binara(p,0,10*p,M);
    if(M==Max)
    {
        g<<-1;
        return 0;
    }
    g<<M;
    return 0;
}