Cod sursa(job #1027239)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 12 noiembrie 2013 17:12:01
Problema Factorial Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<iostream>
#include<stdio.h>
#define Nmax 100000000
using namespace std;


long long P;


int main()
{
	long long upper_bound = 200000000;
	long long lower_bound = 1;
    freopen("fact.in","r", stdin);
    freopen("fact.out", "w", stdout);
 
    cin >> P;
	if(P == 0)
	{
		cout << 1 << endl;
		return 0;
	}

	while(lower_bound <= upper_bound)
	{
		long long nr5 = 0;
		long long mid = ( lower_bound + upper_bound ) / 2;

		for(long long putere5 = 5; mid / putere5; putere5 *= 5)
            nr5 += mid / putere5;

		if(nr5 == P)
		{
			if(mid % 10 > 5)
				mid = mid / 10 * 10 + 5;
			else
				if(mid % 10 < 5)
					mid = mid / 10 * 10;
			cout << mid;
			break;
		}
		else
			if(nr5 > P)
			{
				upper_bound = mid - 1;
			}
			else
			{
				lower_bound = mid + 1;
			}
	}
	if(lower_bound > upper_bound)
		cout << -1;
    return 0;
}