Исполнитель увеличитель345 преобразует число, записанное на экране. у исполнителя три команды, которым присвоены номера: 1. прибавь 3 2. прибавь 4 3. прибавь 5 первая из них увеличивает число на экране на 3, вторая увеличивает это число на 4, а третья – на 5. программа для исполнителя увеличитель345 – это последовательность команд. определите, сколько существует программ, преобразующих число 22 в число 80. можно решать как с электронной таблицы, так и путем составления программы.
204
224
Ответы на вопрос:
//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
Можно решать по-другому, используя динамическое программирование. обозначим 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
Украинский не знаю, но решил правильно
если нужно вывести элементы, напиши мне
Объяснение:
#include<bits/stdc++.h>
using namespace std;
long long n;
set <long long> s;
int main(){
cin >> n;
long long a;
for (int i = 0; i < n; i++){
cin >> a;
s.insert(a);
}
cout << s.size();
return 0;
}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
AnyaFilenkova15.08.2020 09:52
-
fvbh3fvhc13.01.2021 04:25
-
AlexDid00001.03.2022 21:25
-
Alina243jhj22.01.2023 16:04
-
ЛизаХлеб06.04.2020 11:31
-
Кирилл62а20.10.2022 13:59
-
nastea03009.02.2023 23:42
-
mariia170626.06.2020 10:41
-
1425171417.06.2021 18:49
-
Krooop0429.06.2020 12:12
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.