nastyagru1
28.05.2022 17:37

Программирование Python Напишите программы по примеру:
Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 20, и при этом траектория вычислений содержит число 10?
Решение (теоретическое):
запишем рекуррентную формулу для вычисления – количества возможных программ для получения числа N из некоторого начального числа:
, если N не делится на 2
, если N делится на 2
все допустимые программы можно разбить на 2 части:
– переход от 1 до 10
– переход от 10 до 20

обозначим через количеств возможных программ получения числа b из числа a
очевидно, что если траектория проходит через c, то для любого c, такого что a < c < b
поэтому
вычисляем эти значения отдельно стандартным по рекуррентным формулам и перемножаем: 14 ⋅ 2 = 28
ответ: 28.

Решение (рекурсивная программа, Python):
главная проблема при решении этого задания – высокая вероятность арифметической ошибки, поэтому для проверки (если есть время) можно написать программу, реализующую тот же алгоритм
вычисления по рекуррентным формулам можно организовать с рекурсии
рекурсивная функция, которая возвращает количество программ для преобразования числа start в число x, может быть написана так:
def numProg( start, x ):
if x < start: return 0 # (1)
if x == start: return 1 # (2)
K = numProg( start, x-1 ) # (3)
if x % 2 == 0:
K += numProg( start, x//2 ) # (4)
return K
если число x меньше, чем начальное значение, количество программ равно 0 (строка (1))
если число x равно начальному значению, количество программ равно 1 (строка (2))
в остальных случаях всегда учитываем количество программ предыдущего числа (если последняя команда программы будет +1), см. строку (3)
если число 0078 чётное, нужно добавить ещё и количество программ для числа x//2 (строка (4))
в основной программе вычисляем количество программ от 1 до 10 и умножаем на количество программ от 10 до 20:
print( numProg(1,10)*numProg(10,20) )
ответ: 28.


Программирование Python Напишите программы по примеру: Исполнитель преобразует число на экране. У ис
Программирование Python Напишите программы по примеру: Исполнитель преобразует число на экране. У ис
Программирование Python Напишите программы по примеру: Исполнитель преобразует число на экране. У ис

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Velichkovskaya0
21.09.2022 02:17

Объяснение:Победа Красной Армии под Курском предопределила быстрое наступление советских войск к Днепру. Битва за Днепр проходила в августе–декабре 1943 года на огромном фронте и стала ключевым этапом освобождения Красной Армией Левобережной Украины, а затем продвижения наших фронтов по Правобережной Украине к границе с Румынией.

Днепр был мощнейшей естественной преградой. Правый берег реки выше левого, что создавало для наступающих частей РККА дополнительные трудности. В немецкие планы входило остановить продвижение советских сил на рубеже так называемого Восточного вала, протянувшегося от Балтийского до Чёрного моря. Важнейшей частью этого вала был Днепр, который достигал в ширину 900 и более метров. На обоих берегах создавались полосы обороны, предмостные укрепления, многочисленные доты и дзоты. Гитлер прекрасно понимал, что потеря Украины лишит Третий рейх поставок хлеба, железной руды, угля. Фюрер ухватился за днепровский рубеж как за свое В планах командования Красной Армии было сбросить врага с Восточного вала, полностью очистить от противника Донбасс, создать на западном берегу Днепра широкие плацдармы, освободить столицу Советской Украины Киев, а затем и всю Правобережную Украину. Для этого сосредотачивались мощные группировки Центрального, Воронежского, Степного, Юго‑Западного и Южного фронтов (с октября 1943 года — соответственно Белорусского, 1‑го, 2‑го, 3‑го, 4‑го Украинских фронтов). Координировать действия фронтов было поручено маршалам Г. К. Жукову и А. М. Василевскому.

Коренной перелом начат в декабре 1941 года под Москвой, продолжен с 17 июля 1942 по 2 февраля 1943 года в Сталинграде, закреплен с 5 июля 1943 — 23 августа 1943 на Курской дуге Ну очень кратко!

0,0(0 оценок)
Ответ:
lenalime
21.09.2022 02:17

ответ: Би́тва за Днепр — ряд взаимосвязанных стратегических операций Великой Отечественной войны, проведённых ВС Союза ССР, во второй половине 1943 года на берегах Днепра.  

С обеих сторон в битве приняло участие до 4 млн человек, а её фронт растянулся на 750 километров. В результате четырёхмесячной операции Левобережная Украина была почти полностью освобождена Красной армией от нацистских захватчиков. В ходе операции значительные силы Красной Армии форсировали реку, создали несколько стратегических плацдармов на правом берегу реки, а также освободили город Киев. Битва за Днепр стала одним из крупнейших сражений в мировой истории.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота