Cod sursa(job #2506707)

Utilizator ViAlexVisan Alexandru ViAlex Data 8 decembrie 2019 17:28:51
Problema Factorial Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<bits/stdc++.h>
using namespace std;


int n;
ifstream in("fact.in");
ofstream out("fact.out");

#define MAX 100000000



int get_zero_in_factorial(int last)
{
    int div=5;
    int result=0;

    while(div<=last)
    {
        result+=last/div;
        div*=5;
    }
    return result;
}

int solve()
{

    int left=1,right=MAX;
    int to_return=-1;
    while(left<=right)
    {
        if(left==right)
        {
            to_return=left;
            break;
        }


        int middle=(left+right)/2;
        int here=get_zero_in_factorial(middle);

        if(n<=here)
        {
            right=middle;
        }
        else if(n>here)
        {
            left=middle+1;
        }
    }

    if(get_zero_in_factorial(to_return)==n)
        return to_return;
    return -1;
}

int main()
{
    in>>n;
    out<<solve();
}