Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти количество пар элементов массива, чья сумма в восьмиричной системе счисления оканчивается на 6, и заменить каждый элемент таких пар на их количество. Под парой подразумевается два подряд идущих элемента массива, элементы в парах не повторяются. В качестве ответа программа должна вывести изменённый массив (по одному элементу в строке). Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с нуля.
Например, для исходного массива из 10 элементов
57
583
20
43
3
983
534
32
3
2
программа должна вывести
2
(Под условие подходят следующие пары: 43 и 3, 534 и 32).
Для удобства за пару будем считать элементы и
(не
и
!), следующей парой будут
и
. Шаг цикла будет равен 2, потому что от элемента
нам надо перейти не к
, а к
.
В цикле от 0 до
(до
, а не до
, так иначе программа будет пытаться проверить пару
и
, но элемента
не существует в силу индексации с нуля) мы будем перебирать элементы массива. В переменной
, которую изначально приравняем к нулю, будем хранить количество пар, чья сумма в восьмиричной системе счисления оканчивается на 6.
Опишем алгоритм для нахождения последней цифры числа в восьмиричной системе счисления. Вспомним, что для перевода числа в восьмиричную систему счисления нужно делить число на 8 до тех пор, пока оно не станет меньше 8, и запоминать остатки, получившиеся при делении. После этого надо выписать подряд в строку все остатки, начиная с последнего. Полученное число и будет являться восьмиричным разложением числа. Таким образом, чтобы узнать последнюю цифру числа в восьмиричной системе счисления, надо узнать остаток от деления исходного числа на 8 (ведь если мы выписываем остатки, начиная с последнего, то последней цифрой числа будет первый остаток от деления на 8).
Задача сводится к тому, что нам надо найти остаток от деления на 8 суммы двух элементов. Если он равен 6, мы увеличиваем счетчик на 1.
Пример на :