Помогите с задачей по программированию . Макс называет сбалансир
Помогите с задачей по программированию . Макс называет сбалансированными положительные целые числа, у которых количество чётных цифр равно количеству нечётных цифр. Например, числа 10 , 6271 и 945227 являются сбалансированными, а числа 303 , 1475 и 241200 — нет. Макс хочет узнать, сколько сбалансированных чисел содержится в отрезке от L до R включительно. Помогите ему найти ответ на этот вопрос. Входные данные Первая строка содержит целое число L (1≤L≤10 18 ) — левую границу отрезка, в котором Макс ищет сбалансированные числа. Вторая строка содержит целое число R (L≤R≤10 18 ) — правую границу отрезка, в котором Макс ищет сбалансированные числа. Выходные данные Выведите одно целое число — количество сбалансированных чисел в интересующем отрезке. Обратите внимание, что числа L и R , а также значение ответа могут быть велики и не поместиться в 32-битные целочисленные типы. Используйте тип Int64 в Pascal, long long в C++, long в Java и C#
Для решения этой задачи можно использовать рекурсивную функцию, которая будет проверять каждое число в заданном отрезке на сбалансированность.
Сначала определим функцию, которая будет считать количество четных и нечетных цифр в числе:
def count_digits(n):
even_count = 0
odd_count = 0
while n > 0:
digit = n % 10
if digit % 2 == 0:
even_count += 1
else:
odd_count += 1
n //= 10
return even_count, odd_count
Затем определим рекурсивную функцию, которая будет проверять каждое число в заданном отрезке на сбалансированность:
def count_balanced_numbers(L, R):
if L > R:
return 0
if L == R:
even_count, odd_count = count_digits(L)
if even_count == odd_count:
return 1
else:
return 0
mid = (L + R) // 2
return count_balanced_numbers(L, mid) + count_balanced_numbers(mid + 1, R)
Наконец, прочитаем входные данные и вызовем функцию count_balanced_numbers:
L = int(input())
R = int(input())
result = count_balanced_numbers(L, R)
print(result)
Пример входных данных:
10
100
Пример выходных данных:
9
В данном примере сбалансированными числами в интересующем отрезке являются: 10, 12, 14, 16, 18, 20, 22, 24, 26.