Cod sursa(job #1026819)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 12 noiembrie 2013 00:28:55
Problema Factorial Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 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;
			return 0;
		}

		if(nr5 < P)
		{
			lower_bound = mid + 1;
		}
		else
		{
			upper_bound = mid - 1;
		}
	}
	cout << -1;
    return 0;
}