Python
Как в Python задать условие
Условие: найти кол-во 6-значных чисел, кратных 5, в которых каждая цифра встречается 1 раз и никакие две четные и нечетные не стоят рядом
def yes(x):
~~digits = list(str(x))
~~if sum([digits.count(i) for i in digits]) == 6 and x % 5 == 0:
~~~~цифра = list(map(int, digits))
~~~~for i in range(5):
~~~~~~if (цифра [i] + цифра [i + 1]) % 2 == 0:
~~~~~~~~return 0
~~~~return 1
~~return 0
quantity = 0
for k in range(100000, 1000000, 5):
~~if yes(k): quantity += 1
print(quantity)
input()
# В первом ответе получаются ответы 1 и 1296. Второй ответ какой-то странный. А у меня получается тоже 1296. (•‿•)
~~digits = list(str(x))
~~if sum([digits.count(i) for i in digits]) == 6 and x % 5 == 0:
~~~~цифра = list(map(int, digits))
~~~~for i in range(5):
~~~~~~if (цифра [i] + цифра [i + 1]) % 2 == 0:
~~~~~~~~return 0
~~~~return 1
~~return 0
quantity = 0
for k in range(100000, 1000000, 5):
~~if yes(k): quantity += 1
print(quantity)
input()
# В первом ответе получаются ответы 1 и 1296. Второй ответ какой-то странный. А у меня получается тоже 1296. (•‿•)
def count(used = set(), digits = {0, 5}, level = 0):
~~if level > 5: return 1
~~result = 0
~~for i in (digits if level != 5 else digits - {0}) - used:
~~~~result += count(used | {i}, {0, 2, 4, 6, 8} if i % 2 else {1, 3, 5, 7, 9}, level + 1)
~~return result
print(count())
Число кратно 5, если последняя цифра числа 0 или 5.
Если текущая цифра числа чётная, значит стоящая от неё слева нечётная и наоборот.
Допустимый набор значений текущей цифры - digits
Цифры, которые уже встречались в числе - used
Номер позиции текущей цифры (начиная с 0) - level
А можно просто пройтись по всем числам, преобразовать число в список цифр и проверить, что все цифры разные и стоят в нужном порядке:
cnt = 0
for i in range(100000, 1000000, 5):
~~s = list(map(int, str(i)))
~~cnt += len(set(s)) == 6 and sum([(s[j] + s[j + 1]) % 2 for j in range(5)]) == 5
print(cnt)
~~if level > 5: return 1
~~result = 0
~~for i in (digits if level != 5 else digits - {0}) - used:
~~~~result += count(used | {i}, {0, 2, 4, 6, 8} if i % 2 else {1, 3, 5, 7, 9}, level + 1)
~~return result
print(count())
Число кратно 5, если последняя цифра числа 0 или 5.
Если текущая цифра числа чётная, значит стоящая от неё слева нечётная и наоборот.
Допустимый набор значений текущей цифры - digits
Цифры, которые уже встречались в числе - used
Номер позиции текущей цифры (начиная с 0) - level
А можно просто пройтись по всем числам, преобразовать число в список цифр и проверить, что все цифры разные и стоят в нужном порядке:
cnt = 0
for i in range(100000, 1000000, 5):
~~s = list(map(int, str(i)))
~~cnt += len(set(s)) == 6 and sum([(s[j] + s[j + 1]) % 2 for j in range(5)]) == 5
print(cnt)
Олег Олегович Маркин
Жесть, и это 1 часть ЕГЭ.
вот как то так


Олег Олегович Маркин
И сколько чисел вывел?
Похожие вопросы
- Окончил курсы на степике по Python что делать дальше?
- Python программирование. Помогите написать программу.
- Нейронные сети на Python 3.4
- Как сделать несколько условий для оператора в Python 3?
- Помогите, как сделать авторизацию в программе на python?
- Что писать на Python?
- Есть ли смысл изучать python
- Подскажите ресурс\книги с примерами по высшей математике и их решений на языке Python
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Программисты, расскажите, правильный StartUp? Python