Tópico 2674: Questões Reais do 13º Concurso Provincial da Copa Lanqiao 2022 - Encontrando Fatorial

Limite de tempo: 1s Limite de memória: 512 MB Commits: 1407 Resolvido: 513

descrição do tópico

Qual é o menor N tal que N! tem exatamente K zeros no final? 

Se tal N não existir, imprima −1.

Formato de entrada

um inteiro K.

Formato de saída

Um número inteiro que representa a resposta. 

amostra de entrada

cópia de

2

amostra de saída

cópia de

10

dica

Para 30% dos dados, 1 ≤ K ≤ 106 .

Para 100% dos dados, 1 ≤ K ≤ 1018 .

#include <iostream>
using namespace std;
int find2(int n) {
	int i = 0;
	while (n % 2 == 0 && n != 0) {
		i++;
		n /= 2;
	}
	return i;
}
int find5(int n) {
	int i = 0;
	while (n % 5 == 0 && n != 0) {
		i++;
		n /= 5;
	}
	return i; 
}
int main() {
	int K;
	int i = 0;
	int j = 0;
	int I = 2;
	int J = 5;
	cin >> K;
	while (min(i,j) <= K) {
			i += find2(I);
			I += 2;
		j += find5(J);
		if (min(i, j) == K) {
			cout << J;
			return 0;
		}
		J += 5;
	}
	cout << -1;
	return 0;
}

O código não passou em todos os casos de uso, basta dar uma olhada

Acho que você gosta

Origin blog.csdn.net/qq_63499305/article/details/129902105
Recomendado
Clasificación