Cod sursa(job #1689819)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 14 aprilie 2016 16:38:03
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long n, p, ok;

long long cati_0(long long x)
{   long long nr=0;
    while(x/5)
    {   nr=nr+x/5;
        x=x/5;
    }
    return nr;
}
void caut_bin()
{   long long st=1, dr=(1LL<<63)-1, mij, x;
    while(st<=dr)
    {   mij=(st+dr)/2;
        x=cati_0(mij);
        if(x==p)
        {   ok=1;
            n=mij;
            return;
        }
        if(x<p)
            st=mij+1;
        else dr=mij-1;
    }
}

int main()
{   f>>p;
    caut_bin();
    if(p==0)
    {   g<<1;
        return 0;
    }
    if(ok==1)
    {   while(n%5) n--;
        g<<n;
    }
    else g<<-1;
    return 0;

}