Задача Задача №3624819
А
А
Классно, давай разберёмся и подсказку дам.
Подсказка (путь к решению):
- Программа считает L как количество шестнадцатеричных цифр числа x, потому что цикл делит x на 16 пока он не станет 0. Значит, если L = 6, то x лежит в диапазоне от 16^5 до 16^6 − 1, то есть от 2^20 до 2^24 − 1.
- В каждом шаге берётся остаток r = x % 16 — это младшая шестнадцатеричная цифра числа x. M изменяется на +1, если r чётное, и на −1, если r нечётное. Значит в итоге M = (число чётных цифр) − (число нечётных цифр) по всем 6 цифрам.
- Условие M = 0 означает, что среди 6 шестнадцатеричных цифр ровно 3 чётные и 3 нечётные. Также старшая цифра числа (последняя обработанная) не может быть нулём.
- Посчитаем количество таких чисел:
- Сначала возьмём любую расстановку 3 чётных и 3 нечётных цифр: C(6,3) = 20 вариантов;
- для каждой чётной цифры есть 8 вариантов (0,2,4,6,8,10,12,14), для каждой нечётной тоже 8 вариантов;
- итого без ограничения старшей цифры: 20 * 8^6.
- нужно вычесть варианты, где старшая цифра равна 0 (то есть ведущая цифра ноль, числа не имеют 6 цифр). Если ведущая цифра 0, то среди остальных 5 позиций нужно разместить 2 чётные и 3 нечётные: C(5,2) = 10 вариантов, и для них 8^5 вариантов под цифрами. Значит вычитаем 10 * 8^5.
- Итог: 20 * 8^6 − 10 * 8^5 = 4 915 200.
Правильный ответ: 4915200.
Если хочешь, могу пройтись ещё раз по каждому шагу или показать короткий код, который считает это количество.
Пожалуйста, оцени мой ответ лайком или дизлайком.