2. Исполнитель ВЫЧИСЛИТЕЛЬ умеет выполнять только 2 команды: (1) +1 (2) ×10 Составьте для ВЫЧИСЛИТЕЛЯ наиболее короткий алгоритм получения из числа 6 число 82.
число 82 = 80 + 2 (состоит из 8 десятков и 2 единиц)
числа 6 (состоит из 6 единиц)
команда 1 увеличивает число на 1 единицу
команда 1 переводит число в новый разряд (из единиц команда получает десятки, из десятков команда получает сотни и т.д.)
следователь самый короткий путь это привести число 6 к количеству десятков в числе 82 (командой 1), затем привести полученное число в новый разряд (командой 2),потом привести полученное число к числу 82 (командой 1)
Представим, что мы сняли всю землю с холмов до нулевого уровня в пределах полосы шириной 1 метр, а потом засыпали её обратно так, чтобы уровень стал горизонтальным на высоте h.
Посчитаем объем земли, который был снят. Всю землю можно разделить на фигуры толщиной 1 метр, в основании которых трапеции с высотой 1 м и основаниями - двумя соседними измерениями высоты. Тогда объем каждой фигуры V(i) = (h(i) + h(i + 1)) / 2, полный объем V = V(1) + V(2) + ... + V(N - 1) = h(1)/2 + (h(2) + h(3) + ... + h(N - 2)) + h(N - 1)/2
Объем земли, который использовался для засыпания, равен V = h (N - 1).
Эти объемы, конечно, равны, тогда h = (h(1)/2 + h(N - 1)/2 + (h(2) + h(3) + ... + h(N - 2))/(N - 1)
PascalABC.NET 3.2.1518: begin var N := ReadInteger; print(ReadSeqInteger(N) .Select((x, i) -> (i = 0) or (i = N - 1) ? x/2 : x) .Sum / (N - 1)) end.
С вводом-выводом в файл: begin var f := OpenRead('INPUT.TXT'); var N := f.ReadInteger; var S := f.ReadInteger / 2; for var i := 2 to N - 1 do S += f.ReadInteger; S += f.ReadInteger / 2; print(S / (N - 1)) end.
11211
Объяснение:
число 82 = 80 + 2 (состоит из 8 десятков и 2 единиц)
числа 6 (состоит из 6 единиц)
команда 1 увеличивает число на 1 единицу
команда 1 переводит число в новый разряд (из единиц команда получает десятки, из десятков команда получает сотни и т.д.)
следователь самый короткий путь это привести число 6 к количеству десятков в числе 82 (командой 1), затем привести полученное число в новый разряд (командой 2),потом привести полученное число к числу 82 (командой 1)
6 + 1 = 7 (команда 1)
7 + 1 = 8 (команда 1)
8 * 10 = 80 (команда 2)
80 + 1 = 81 (команда 1)
81 + 1 = 82 (команда 1)