главная новое лучшее написать
3

Ссылка на задачу - 1780. Check if Number is a Sum of Powers of Three.

📌 Описание задачи

Дано число n. Нужно определить, можно ли представить его в виде суммы различных степеней тройки.

🔹 Пример:

💡 Идея

Рассмотрим представление n в троичной системе счисления:

Таким образом, задача сводится к поразрядной проверке числа в троичной системе счисления.

🚀 Детали подхода

Будем использовать рекурсию и деление числа на 3:

  1. База рекурсии: Если n == 0, то мы успешно разложили число, возвращаем true.
  2. Шаг рекурсии: Если n % 3 == 2, то n нельзя разложить, возвращаем false.
  3. Рекурсивный вызов: Проверяем n / 3, повторяя процесс.

⏱ Асимптотика

📝 Исходный код

impl Solution {
    pub fn check_powers_of_three(n: i32) -> bool {
        n == 0 || (n % 3 != 2 && Self::check_powers_of_three(n / 3))
    }
}

Tags: #rust #algorithms #math