В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
lenasimona55
lenasimona55
17.02.2022 04:43 •  Информатика

ЗНАТОКИ новая тема ...не понимаю...нужно решить при перемистительного закона, сочетательного, поглащения, повторения,сочетательного, распределительного,исключение третьего и.т.дзнатоки нужно до завтра...умоляюи можно после каждого примера написать какие законы применяли.


ЗНАТОКИ новая тема ...не понимаю...нужно решить при перемистительного закона, сочетательного, поглащ

Показать ответ
Ответ:
kolasalnov5
kolasalnov5
29.01.2023 21:51
Можно решать задачу по-другому, используя динамическое программирование.
Обозначим F[n] - число получить число n и положим F[18]=F[19]=F[20]=F[21]=0, а F[22]=1. Тогда F[k] = F[k-3]+F[k-4]+F[k-5] для любого k >= 23.
(Почему так? Возьмём некоторое число k. Его можно получить из чисел k-3, k-4, k-5 путём прибавления тройки, четвёрки и пятёрки соответственно, притом если мы договорились, например, что последней операцией будем прибавление пятёрки, то число получить число k будет равно числу получить k-5, ведь последнюю операцию мы определим однозначно. Поэтому число получить k - сумма количеств получить k-3, k-4 и k-5)
Итак, F[k] = F[k-3]+F[k-4]+F[k-5], F[18]=F[19]=F[20]=F[21]=0 и F[22]=1. По этой рекуррентной формуле можно даже посчитать вручную (это будет немного долго), или воспользоваться компьютером. Например, на python 3 можно написать такую программу:
a = [0] * 5;n = 22;a[n % 5] = 1;while n < 80:    n += 1;    a[n % 5] = a[(n-3) % 5] + a[(n-4) % 5] + a[(n-5) % 5]print(a[n % 5])

ответ: 3174448
0,0(0 оценок)
Ответ:
Diglir
Diglir
29.01.2023 21:51
//Ruby 22

def factorial(n)
    f = 1;
    for i in 1..n; f *= i; end;
    f
end

n=0

for i in 0..80/3
    for j in 0..80/4
        for k in 0..80/5
            if 22+3*i+4*j+5*k==80
                nn = factorial(i+j+k)/factorial(i)/factorial(j)/factorial(k)
                n+=nn
                p [i,j,k]

            end
        end
    end
end
p n

Как работает программа:
Сначала мы находим получить из 22 число 80. Для удобства шаги мы упорядочеваем: сначала прибавляем тройки, потом четверки, потом пятерки. Ищем все возможные наборы (i, j, k) которые отвечают равенству 22 + 3i + 4j + 5k = 80. Для каждого такого набора высчитываем кол-во перестановок с повторениями и суммируем их. 
ответ 3174448
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота