Pagini recente » Istoria paginii utilizator/weeryokun | Profil M3nTh0LL | Istoria paginii utilizator/stefi2104 | Monitorul de evaluare | Cod sursa (job #941036)
Cod sursa(job #941036)
//problema facauta la plictiseala
//n-aveam altceva mai bun de facut
#include<cstdio>
#include<utility>
FILE *f=fopen("fact.in","r");
FILE *g=fopen("fact.out","w");
using namespace std;
int p;
int Answer;
int numb_power5(int n);
int binary_search(int left,int right);
int main ( void )
{
fscanf(f,"%d",&p);
if( p == 0)
fprintf(g,"1");
else
{
Answer=binary_search(1,2000000000);
if( Answer == 0 )
fprintf(g,"-1");
else
{
while( Answer % 5 )
--Answer;
fprintf(g,"%d",Answer);
}
}
fclose(f);
fclose(g);
return 0;
}
int binary_search ( int left , int right )
{
while( left <= right )
{
int mid=(left+right)>>1;
int number=numb_power5( mid );
if( number == p )
return mid;
else
if( number <= p )
left=mid-1;
else
right=mid+1;
}
}
int numb_power5( int n)
{
int cnt(0);
int x(1);
while( x <= n )
{
x*=5;
cnt+=n/x;
}
return cnt;
}