8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Друг составляет пятизначные числа, используя цифры от до включительно. Цифры в числе могут использоваться только один раз или не использоваться совсем. Число начинается с цифры . Сколько различных чисел, имеющих ровно три подряд идущие четные цифры, друг может составить?
Решение руками
Первой цифрой числа является , она нечётная. Значит либо на , и месте в слове должны стоять чётные цифры, либо на , и , всего варианта. Изначально у нас есть четных цифр, после того, как мы поставим любую из них, на второе место мы сможем поставить лишь одну из оставшихся цифр,а на третье — одну из оставшихся. В обоих случаях мы используем цифры, тогда на последнее оставшееся место в числе можно поставить любую из оставшихся нечетных цифр. Значит друг может составить различных чисел.
Решение через циклы
a = ’0123456789’ # наше слово chet = ’02468’ # чётные цифры # комбинации, из которых одна точно должна быть в подходящем слове done = [x1+x2+x3 for x1 in chet for x2 in chet for x3 in chet] # комбинации, из которых ни одна не должна быть в подходящем слове, так как нас интересуют слова, где идут подряд ровно 3 чётные цифры lock = [x1+x2+x3+x4 for x1 in chet for x2 in chet for x3 in chet for x4 in chet] count = 0 # переборы букв слова for x1 in a: for x2 in a: for x3 in a: for x4 in a: for x5 in a: s = x1+x2+x3+x4+x5 if s[0] == ’5’ and len(set(s)) == len(s): # проверка, что число начинается с 5 и каждая цифра встречается единожды # проверка, что есть в слове тройка подряд идущих чётных цифр и нет при этом чётверки подряд идущих цифр if any(word in s for word in done) and all(word not in s for word in lock): count += 1 print(count)
Решение через itertools
from itertools import permutations chet = ’02468’ # чётные цифры done = [x1+x2+x3 for x1 in chet for x2 in chet for x3 in chet] # комбинации, из которых ни одна не должна быть в подходящем слове, так как нас интересуют слова, где идут подряд ровно 3 чётные цифры lock = [x1+x2+x3+x4 for x1 in chet for x2 in chet for x3 in chet for x4 in chet] count = 0 for x in permutations(’0123456789’,r = 5): # перебор слов s = ’’.join(x) if s[0] == ’5’:# проверка, что число начинается с 5 # проверка, что есть в слове тройка подряд идущих чётных цифр и нет при этом чётверки подряд идущих цифр if any(word in s for word in done) and all(word not in s for word in lock): count += 1 print(count)
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!