Cod sursa(job #3042160)
Utilizator | Data | 4 aprilie 2023 11:30:41 | |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
#include <limits.h>
std::ifstream fin("fact.in");
std::ofstream fout("fact.out");
int zeros(unsigned long long n)
{
int s=0, p=5;
while(n/p)
{
s+=n/p;
p*=5;
}
return s;
}
int main(int argc, char *argv[])
{
int p;
fin>>p;
if(p==0) fout<<1;
else
{
int s=5,d=INT_MAX/2-1;
int n;
while(s<=d)
{
n=(s+d)/2;
int z=zeros(n);
if(z<p) s=n+1;
else if(z>p) d=n;
else break;
}
n-=n%5;
fout<<n;
}
return 0;
}