Cod sursa(job #2418590)

Utilizator HelloWorldBogdan Rizescu HelloWorld Data 5 mai 2019 16:17:00
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
const int N = 1e8;
int p,st=1,dr=N*5+5,mij;
int count_zeros(int mij)
{
    int zerouri=0;
    while (mij)
    {
        mij/=5;   /// numerele care sunt divizibile cu 5^x sunt divizibile si cu 5^(x-1), ex : mij=100, 100/5=20 nr care se impart cu 5^1 ==> numerele de l la 100 care se vor imparti cu 5^2 sunt printre cele 20 care se impart cu 5^1 (si sunt de 5 ori mai putine, deci 20/5=4), frecventa cu care apare 5 ca divizor e de 5 ori mai mare decat cea cu care apare 25, de 25 de ori mai mare decat cea cu care apare 125 etc...
        /// daca dupa inca o impartire cu 5 ele au restul 0 (n%5==0) atunci sunt divizibile si cu 5^2
        zerouri+=mij;
    }
    return zerouri;
}
int main()
{
    in>>p;
    while (st<dr)
    {
        mij=(st+dr)/2;
        if (count_zeros(mij)<p)
            st=mij+1;
        else
            dr=mij;
    }
    if (count_zeros(dr)==p)
        out<<dr<<"\n";
    else
        out<<"-1\n";
}