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