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

Составить программу. На вход подаются три числа: 1-е - площадь дома, 2-е и 3-е - длины сторон прямоугольного участка земли. На выходе фраза " Дом поместится" или "Дом не поместится" (в паскале) если можете скиншотом )

Показать ответ
Ответ:
itrufanova2016
itrufanova2016
03.07.2022 02:17
//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 оценок)
Ответ:
Ruki2233
Ruki2233
03.07.2022 02:17
Можно решать задачу по-другому, используя динамическое программирование.
Обозначим 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 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота