Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится восьмеричная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если количество чётных цифр в записи числа нечётно, то к трём последним разрядам восьмеричной записи справа дописывается 46;
- если количество чётных цифр в записи числа чётно, то остаток от деления числа на 8 умножается на 5, переводится в восьмеричную запись и дописывается слева.
Полученная таким образом запись является восьмеричной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 148 результатом является число 14468 = 806, а для исходного числа 777 = 14118 это число 411468 = 16998.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, равное N
Правильный ответ:
16
# Функция для подсчета чётных цифр
def count_evens(num):
evens = sum([1 for i in num
if int(i, 8) % 2 == 0])
return evens
res = []
for N in range(10000):
# Строим 8-ричную запись
R = f'{N:o}'
# Если кол-во нечётно
if count_evens(R) % 2:
R = R[-3:] + '46'
# Если кол-во чётно
else:
R = f'{(N % 8 * 5):o}' + R
# Переводим в десятичную
R = int(R, 8)
# Формируем ответ
if N == 12:
print(R)
break
