Программа курса:
Разбор задачи: Сила Трёх
Предложенный нами код решения:
def is_power_of_three(n):
"""
Проверяет, является ли число степенью числа 3.
Число n является степенью числа 3, если существует целое число x, такое что n == 3^x.
:param n: целое число
:return: True, если число является степенью 3, иначе False
"""
if n <= 0:
return False
while n % 3 == 0:
n //= 3
return n == 1Нужно определить, является ли целое число n степенью числа 3. То есть проверить, существует ли такое целое число x, что n равно 333 в степени xxx.
Алгоритм решения:
Проверка базовых случаев:
if n <= 0: return False- Если число
nменьше или равно нулю, оно не может быть степенью числа 3, так как степени числа 3 всегда положительные. - Возвращаем
False.
- Если число
Итеративное деление на 3:
while n % 3 == 0: n //= 3- Пока число
nделится на 3 без остатка (остаток от деления равен нулю), уменьшаем его, деля на 3. - Таким образом, мы сокращаем значение
nдо тех пор, пока оно не станет равно 1 (если это степень числа 3) или пока больше не сможет делиться на 3.
- Пока число
Проверка конечного результата:return n == 1- После завершения цикла проверяем, осталось ли число равным 1.
- Если
nравно 1, значит, исходное число действительно было степенью числа 3. - Если
nне равно 1, то оно не является степенью числа 3.
Примеры работы алгоритма:
- Пример: n = 27
- На первой итерации: 27 делится на 3, результат деления — 9.
- На второй итерации: 9 делится на 3, результат деления — 3.
- На третьей итерации: 3 делится на 3, результат деления — 1.
- После завершения цикла
nравно 1, возвращаемTrue.
- Пример: n = 0
- Проверяем условие
if n <= 0. Оно выполняется, возвращаемFalse.
- Проверяем условие
- Пример: n = -1
- Проверяем условие
if n <= 0. Оно выполняется, возвращаемFalse.
- Проверяем условие
- Пример: n = 10
- Проверяем делимость на 3: 10 не делится на 3, цикл завершается.
- После выхода из цикла
nне равно 1, возвращаемFalse.
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии