Сложность: medium
Дано целое число n, верните количество конечных нулей в n!.
Обратите внимание, что n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1.
Пример:
Input: n = 3
Output: 0
Explanation: 3! = 6, no trailing zero.
👨💻 Алгоритм:
1⃣Вычислите факториал n:
Инициализируйте переменную nFactorial значением 1.
Для каждого i от 2 до n включительно умножайте nFactorial на i.
2⃣Подсчитайте количество конечных нулей в nFactorial:
Инициализируйте переменную zeroCount значением 0.
Пока nFactorial делится на 10 без остатка, делите его на 10 и увеличивайте zeroCount на 1.
3⃣Верните значение zeroCount как количество конечных нулей в n!.
😎 Решение:
func trailingZeroes(_ n: Int) -> Int {
var nFactorial = 1
for i in 2...n {
nFactorial *= i
}
var zeroCount = 0
var nFactorialBigInt = nFactorial
while nFactorialBigInt % 10 == 0 {
nFactorialBigInt /= 10
zeroCount += 1
}
return zeroCount
}Ставь 👍 и забирай 📚 Базу знаний