Pagini recente » Cod sursa (job #2031630) | Cod sursa (job #1191329) | Cod sursa (job #116713) | Cod sursa (job #1032126) | Cod sursa (job #393380)
Cod sursa(job #393380)
/*
* File: main.cpp
* Author: virtualdemon
*
* Created on February 9, 2010, 11:32 AM
*/
#include <fstream>
/*
*
*/
using namespace std;
typedef long long int lld;
lld p;
int f( lld n )
{
lld s=0, p5=5;
for( ; ; )
{
s+=n/p5;
p5*=5;
if( 0 == n/p5 )
break;
}
if( s == p )
return 0;
if( s > p )
return 1;
return -1;
}
inline lld solve( lld left, lld right )
{
int v;
lld middle, value=-1;
while( left <= right )
{
middle=left+(right-left)/2;
v=f(middle);
if( 0 == v )
{
if( -1 == value || value > middle )
value=middle;
}
if( v >= 0 )
right=middle-1;
else left=middle+1;
}
return value;
}
int main( void )
{
ifstream in("fact.in");
in>>p;
ofstream out("fact.out");
if( !p )
{
out<<'1';
return 0;
}
out<<solve( 1, 1LL*5*p );
return 0;
}