Задача #3043
Комбинаторика
(О. Лысенков) Робот перебирает шестизначные девятеричные числа в порядке возрастания. Ниже приведено начало списка.
1. 100000
2. 100001
3. 100002
4. 100003
5. 100004
...
Напишите последнее число(в девятеричной записи) из списка, в котором никакие две нечётные цифры не стоят рядом,а номер числа оканчивается на цифру 5.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
888881
from itertools import product
#1 способ
k = 0
ans = ''
for i in product('012345678',repeat = 6):
s = ''.join(i)
if s[0] != '0':
k += 1
if k % 10 == 5 and all(int(s[j]) % 2 == 0 or int(s[j + 1]) % 2 == 0 for j in range(5)):
ans = s
print(ans)
#2 способ
k = 0
ans = ''
for i in product('012345678',repeat = 6):
s = ''.join(i)
if s[0] != '0':
k += 1
new_s = s #сохранили s перед тем как её изменять
s = s.replace('1','3').replace('3','5').replace('5','7')
if k % 10 == 5 and '77' not in s:
ans = new_s
print(ans)