Готовлюсь к егэ по информатике. Решение писал по шаблону. Код не хочет выводить результат. Подскажите где я обосрался, пожалуйста)
Текст задачи:
Найдите количество пятизначных восьмеричных чисел, в которых все цифры различны и никакие две четные или нечетные не стоят рядом.
Код:
a="01234567"
c=1
for f1 in a:
for f2 in a:
for f3 in a:
for f4 in a:
for f5 in a:
s=f1+f2+f3+f4+f5
if (s.count("0")==1) and (s.count("1")==1) and (s.count("2")==1) and (s.count("3")==1) and (s.count("4")==1)and (s.count("5")==1) and (s.count("6")==1) and (s.count("7")==1):
if (not "13" in s) and (not "15" in s) and (not "17" in s) and (not "31" in s) and (not "35" in s) and (not "37" in s) and (not"51" in s) and (not"53" in s) and (not"57" in s) and\
(not "71" in s) and (not"73" in s) and (not"75" in s) and (not"11" in s) and (not"33" in s) and (not"55" in s) and (not"77" in s) and (not"00" in s) and (not"22" in s) and\
(not "44" in s) and (not"66" in s) and (not"02" in s) and (not"04" in s) and (not"06" in s) and (not"20" in s) and (not"24" in s) and (not"26" in s) and (not"40" in s) and\
(not "42" in s) and (not"46" in s) and (not"60" in s) and (not"62" in s) and (not"64" in s):
print(c)
c+=1
Python
Можете подсказать, почему код не работает?
это ужас, а не решение, ты на егэ тоже будешь 100 лет сидеть прописывать все 100500 условий в 100500 вложенных циклах? А если система будет 16чная, а числа длиной в знаков так 10? А потом также 100 лет дебажить?
Сразу в глаза бросается то, что ты обязываешь свое пятизначное число содержать все цифры от 0 до 7, что, очевидно, невозможно. Что делать? Во всех каунтах заменить "==" на "<=" Дальше - даже читать не буду.
Возвращаясь к задаче, это простая комбинаторика: 5 мест: на первое - 7 кандидатов(все, кроме 0), на второе - 4(все другой четности), на третье - 3(все первой четности, кроме того, что взяли на первую позицию), и так далее.
Итого имеем: 7 * 4 * 3 * 3 * 2 = 504 варианта. Даже прогать ничего не надо...
Если уж очень хочется решить это кодом и втупую, перебором, то делай хотя бы так, что ли:
Сразу в глаза бросается то, что ты обязываешь свое пятизначное число содержать все цифры от 0 до 7, что, очевидно, невозможно. Что делать? Во всех каунтах заменить "==" на "<=" Дальше - даже читать не буду.
Возвращаясь к задаче, это простая комбинаторика: 5 мест: на первое - 7 кандидатов(все, кроме 0), на второе - 4(все другой четности), на третье - 3(все первой четности, кроме того, что взяли на первую позицию), и так далее.
Итого имеем: 7 * 4 * 3 * 3 * 2 = 504 варианта. Даже прогать ничего не надо...
Если уж очень хочется решить это кодом и втупую, перебором, то делай хотя бы так, что ли:
def check(s):
if s.count("8") > 0 or s.count("9") > 0:
return 0
for i in range(8):
if s.count(str(i)) > 1:
return 0
for i in range(1, len(s)):
if int(s[i]) % 2 == int(s[i - 1]) % 2:
return 0
return 1
cnt = 0
for i in range(10000, 100000):
cnt += check(str(i))
print(cnt) # 504
Евгений Холманский
Спасибо, все сработало. Наверное действительно лучше решать все на бумаге)
Похожие вопросы
- Почему код не работает python
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- ЛЮДИ ПОМОГИТЕ У МЕНЯ ЭТОТ КОД НЕ РАБОТАЕТ НУЖНА ПОМОЩЬ ПИТОН ЗАВТРА СДАТЬ НАДО
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.
- Можете объяснить поведение кода, почему в итоге располжение элементов поменялось?
- Почему код выглядит именно так?
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Какие значения принимает s в balanced_parens(n-1). Как вообще работает этот код?
- Если две программы работают одинаково но код у них разный, то - это считается ли уже как другая программа ? Понять могу
- почему не работает код ???(Python3)