Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N. 2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается
остаток от деления полученной суммы на 2. 3. Предыдущий пункт повторяется для записи с добавленной цифрой. 4. Результат переводится в десятичную систему и выводится на экран. Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101. 2. Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011. 3. Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110. 4. На экран выводится число 54. Сколько различных чисел, меньших 80, могут появиться на экране в результате работы автомата с решением
Описание процедуры:
процедура <имя процедуры>
нач
<тело процедуры>
кон
процедура ЕДИНИЦА
нач
поворот шаг шаг шаг шаг
поворот поворот
прыжок прыжок прыжок прыжок
поворот
кон
процедура ДЕВЯТЬ
нач
шаг поворот шаг шаг шаг
шаг поворот шаг поворот шаг
шаг поворот шаг поворот поворот поворот
прыжок прыжок поворот
кон
тело программы: программа Число 1919
нач
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
прыжок
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
кон
n = 10;
var
i, k, j: integer;
a: array[1..n] of integer;
begin
Write('Введите через пробел девять целых чисел в порядке возрастания: ');
for i := 1 to n - 1 do Read(a[i]);
Write('Введите целое число для вставки: '); Read(k);
{Определим позицию для вставки}
i := 1;
while (k > a[i]) and (i < n) do i := i + 1;
{Выполним сдвиг бОльших элементов вправо}
for j := n - 1 downto i do a[j + 1] := a[j];
{Осуществим вставку}
a[i] := k;
{Контрольный вывод}
Writeln('Результирующий массив');
for i := 1 to n do Write(a[i], ' ')
end.
Тестовые решения:
Введите через пробел девять целых чисел в порядке возрастания: 3 6 8 10 14 15 17 19 24
Введите целое число для вставки: 25
Результирующий массив
3 6 8 10 14 15 17 19 24 25
Введите через пробел девять целых чисел в порядке возрастания: 3 6 8 10 14 15 17 19 24
Введите целое число для вставки: 0
Результирующий массив
0 3 6 8 10 14 15 17 19 24
Введите через пробел девять целых чисел в порядке возрастания: 3 6 8 10 14 15 17 19 24
Введите целое число для вставки: 13
Результирующий массив
3 6 8 10 13 14 15 17 19 24