Cod sursa(job #2337762)

Utilizator RedXtreme45Catalin RedXtreme45 Data 6 februarie 2019 18:18:18
Problema Factorial Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>

using namespace std;

int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    int n;
    fin>>n;
    long long int u=n*10;
    long long int p=1;
    long long int i=5;
    long long int f=1;
    long long int OK=0;
    if (n==0)
        fout<<1;
    else
    {
        if (n==1)
            fout<<5;
        else
        {
            int o=1;
            while (o<n)
            {
                o=o*5;
            }
            if (o==n)
            {
                OK=-1;
            }
            while (p<=u && OK==0)
            {
                long long int m=(p+u)/2;
                long long int r=5;
                long long int S=0;
                while (r<m)
                {
                    S+=m/r;
                    r*=5;
                }
                if (S<n)
                {
                    p=m+1;
                }
                if (S>n)
                {
                    u=m-1;
                }
                if (S==n)
                {
                    OK=m;
                }
            }
            if (OK>0)
            {
                if (OK%5==0)
                    fout<<OK;
                else
                    fout<<OK-OK%5;
            }
            else
                fout<<-1;
        }
    }
    return 0;
}