Cod sursa(job #1331641)

Utilizator JHarciogRus Cristian JHarciog Data 31 ianuarie 2015 21:57:01
Problema Factorial Scor 45
Compilator java Status done
Runda Arhiva de probleme Marime 1.13 kb
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main {
	
	public static void main(String args[]) throws NumberFormatException, IOException {
		
		BufferedReader bf = new BufferedReader(new FileReader("fact.in"));
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("fact.out"), "utf-8"));
		
		int n = Integer.parseInt(bf.readLine());
		
		if (n == 0) {
			writer.write("1");
			writer.close();
			return;
		}
		
		long ls = 0;
		long ld = 1000000000;
		long k = 0;
		long fact_k = 0;
		
		while (ls < ld) {
			k = (ls + ld) / 2;
			fact_k = fact(k);
			if (fact_k < n) {
				ls = k + 1;
			} else {
				ld = k;
			}
		}
		
		if (fact_k == n) {
			writer.write(String.valueOf(k));			
		} else {
			writer.write("-1");
		}
		
		writer.close();
		
	}
	
	private static long fact(long k) {
		
		long res = 0;
		
		long p = 5;
		
		while (p <= k) {
			res += k / p;
			p *= 5;
		}
		
		return res;
		
	}

}