Доказать несводимость элементов массива к нулю

Задача

Одномерный массив заполнить случайными положительными целыми числами. Изменять массив по следующему правилу: в первую ячейку помещать модуль разности между значениями первой и второй ячеек, во вторую – модуль разности между значениями второй и третьей ячеек, и т. д. В последнюю ячейку помещать модуль разности между значениями последней и первой ячеек. Если выполнять такие преобразования многократно, то можно ли в конечном итоге свести все элементы массива к нулю?

Решение

 

Внешний цикл должен быть бесконечным и прерываться оператором break, если все элементы массива равняются нулю. Для этого можно внутри цикла ввести переменную-флаг, присвоив ей 0, затем проверить каждый элемент, и, если хотя бы одни из них не равен 0, изменить значение флага на 1. После этого цикла-проверки выяснить, если флаг остался равен нулю, то прервать выполнение внешнего цикла. Это будет означать, что массив свелся к нулевым значениям всех своих элементов.

Изменение массива будет протекать во внутреннем цикле от первого элемента до предпоследнего: в каждую ячейку будет записываться абсолютное значение разницы между этой и следующей ячейками. Значение последней ячейки массива будет вычисляться после этого цикла. Для контроля происходящего нужно выводить значение элементов массива на экран.

Программа на языке Паскаль: 

 

const N = 10;
var
    a: array[1..N] of byte;
    i,flag: byte;
begin
    randomize;
    for i:=1 to N do begin
        a[i] := random(20);
        write(a[i]:3);
    end;
    writeln;
    while True do begin
        for i:=1 to N-1 do begin
            a[i] := abs(a[i] - a[i+1]);
            write(a[i]:3);
        end;
        a[N] := abs(a[N]-a[1]);
        write(a[N]:3);
        writeln;
        flag := 0;
        for i:=1 to N do
            if a[i] <> 0 then begin 
                flag := 1;
                break;
            end;
        if flag = 0 then break;
    end;
end.

 

При выполнении программы происходит зацикливание (была прервана вручную - Ctrl+C):

18 14  7 15  2  9  3 19 10 18
  4  7  8 13  7  6 16  9  8 14
  3  1  5  6  1 10  7  1  6 11
  2  4  1  5  9  3  6  5  5  9
  2  3  4  4  6  3  1  0  4  7
  1  1  0  2  3  2  1  4  3  6
  0  1  2  1  1  1  3  1  3  6
  1  1  1  0  0  2  2  2  3  5
  0  0  1  0  2  0  0  1  2  5
  0  1  1  2  2  0  1  1  3  5
  1  0  1  0  2  1  0  2  2  4
  1  1  1  2  1  1  2  0  2  3
  0  0  1  1  0  1  2  2  1  3
  0  1  0  1  1  1  0  1  2  3
  1  1  1  0  0  1  1  1  1  2
  0  0  1  0  1  0  0  0  1  2
  0  1  1  1  1  0  0  1  1  2
  1  0  0  0  1  0  1  0  1  1
  1  0  0  1  1  1  1  1  0  0
  1  0  1  0  0  0  0  1  0  1
  1  1  1  0  0  0  1  1  1  0
  0  0  1  0  0  1  0  0  1  0
  0  1  1  0  1  1  0  1  1  0
  1  0  1  1  0  1  1  0  1  1
  1  1  0  1  1  0  1  1  0  0
  0  1  1  0  1  1  0  1  0  0
  1  0  1  1  0  1  1  1  0  1
  1  1  0  1  1  0  0  1  1  0
  0  1  1  0  1  0  1  0  1  0
  1  0  1  1  1  1  1  1  1  1
  1  1  0  0  0  0  0  0  0  0
  0  1  0  0  0  0  0  0  0  0
  1  1  0  0  0  0  0  0  0  1
  0  1  0  0  0  0  0  0  1  1
  1  1  0  0  0  0  0  1  0  0
  0  1  0  0  0  0  1  1  0  0
  1  1  0  0  0  1  0  1  0  1
  0  1  0  0  1  1  1  1  1  1
  1  1  0  1  0  0  0  0  0  0
  0  1  1  1  0  0  0  0  0  0
  1  0  0  1  0  0  0  0  0  1
  1  0  1  1  0  0  0  0  1  0
  1  1  0  1  0  0  0  1  1  1
  0  1  1  1  0  0  1  0  0  1
  1  0  0  1  0  1  1  0  1  0
  1  0  1  1  1  0  1  1  1  1
  1  1  0  0  1  1  0  0  0  0
  0  1  0  1  0  1  0  0  0  0
  1  1  1  1  1  1  0  0  0  1
  0  0  0  0  0  1  0  0  1  1
  0  0  0  0  1  1  0  1  0  1
  0  0  0  1  0  1  1  1  1  1
  0  0  1  1  1  0  0  0  0  1
  0  1  0  0  1  0  0  0  1  1
  1  1  0  1  1  0  0  1  0  0
  0  1  1  0  1  0  1  1  0  0
  1  0  1  1  1  1  0  1  0  1
  1  1  0  0  0  1  1  1  1  0
  0  1  0  0  1  0  0  0  1  0
  1  1  0  1  1  0  0  1  1  1
  0  1  1  0  1  0  1  0  0  1
  1  0  1  1  1  1  1  0  1  0
  1  1  0  0  0  0  1  1  1  1
  0^C  1  0

Примечания: 

Так как происходит зацикливание, значит массив не сводится к нулевым значениям элемента.

 

Тема

Одномерные массивы

Уровень

Комбинированные задачи