Cod sursa(job #363725)

Utilizator eukristianCristian L. eukristian Data 14 noiembrie 2009 13:59:11
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;

int f(int n);
int bin(int p , int a , int b);
 
int main()
{
	ifstream fin("fact.in");
	ofstream fout("fact.out");
	int P;fin >> P;
	if (P < 6249998)
	{
		fout << bin(P,0,25000000);
	}
	else if (P < 12499999)
	{
		fout << bin(P,25000000,50000000);
	}
	else 
	{
		fout << bin(P,50000000,1000000000);
	}
	return 0;
}


int bin(int p , int a , int b)
{
	int mid = (a+b)/2;
	if (a > b)
	{
		return -1;
	}
	int value = f(mid);
	if(value == p)
	{
		return (mid - (mid % 5));
	}
	else if(value < p)
	{
		return bin(p,mid + 1 , b);
	}
	else
	{
		return bin(p,a,mid - 1);
	}
}

int f(int n)
{
	int p = 0;
	while (n)
	{
		p += n / 5;
		n /= 5;
	}
	return p;
}