Cod sursa(job #2623073)

Utilizator miramaria27Stroie Mira miramaria27 Data 2 iunie 2020 16:14:39
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
///consideram descompunerea lui x! in factori primi

int cinci(int x)
{
    int result=0;
    while(x/5)
    {
        ///prima oara aflam numarul de 5 in componenta x!, apoi numarul de 5 in plus - provenite de la 25 -, etc...
        result+=x/5;
        x=x/5;
    }
    return result;
}
long long factorial(long long k)
{
    ///avem un algoritm asemanator cautarii binare.
    long long i=0,j=5*(k);
    if(k==0)return 1;
    long long m=1;
    while(i<j)
    {
        m=(i+j)/2;
        int actual=cinci(m);
        if(actual>=k)
           j=m;
        else i=m+1;
    }
    return i;
}
int main()
{
    ifstream in("fact.in");
    ofstream out("fact.out");
    int P;
    in>>P;
    out<<factorial(P)<<"\n";
    return 0;
}