Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. ЦИКЛИЧЕСКАЯ СТРУКТУРА УПРАВЛЕНИЯ. МАССИВ КАК...doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.17 Mб
Скачать

Практикум на эвм казань ‑ 2007

КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет вычислительной математики и кибернетики

Кафедра теоретической кибернетики

Практикум на эвм

МЕТОДИЧЕСКИЕ УКАЗАНИЯ И ЗАДАЧИ

ДЛЯ ПРОГРАММИРОВАНИЯ ПО ТЕМЕ:

«ЦИКЛИЧЕСКАЯ СТРУКТУРА УПРАВЛЕНИЯ. МАССИВ КАК СТРУКТУРА ДАННЫХ»

2

К азань – 2007

Печатается по решению

кафедры теоретической кибернетики

Казанского государственного университета

Протокол № 5 от 12 апреля 2007 года

Кугураков В.С., Самитов Р.К., Кугуракова В.В.

Практикум на ЭВМ. Задачи для программирования по теме: «Циклическая структура управления. Массив как структура данных». – Казань: КГУ, 2007. – 38 с.

Пособие предназначено для студентов, обучающихся по специальности «Прикладная математика и информатика» и направлению «Информационные технологии», а также для преподавателей, ведущих практические занятия по информатике, алгоритмическим языкам и программированию. Учебный материал представлен задачами для программирования, которые рекомендуется использовать при изучении темы «Циклическая структура управления. Массив как структура данных».

 Казанский государственный университет, 2007

 Кугураков В.С., Самитов Р.К., Кугуракова В.В., 2007

VI. Циклическая структура управления. Массив как структура данных

Инструментальные средства программирования, используемые в разделе:

  1. Разнообразные операторы (присваивания, составной, условные, цикла, ввода-вывода).

  2. Простые переменные. Одномерные и двумерные массивы с целыми и вещественными компонентами.

  3. Оформление программ с использованием определений меток, констант и типов и описаний простых переменных и переменных-массив (применительно к языку программирования Паскаль).

VI.1. Операции над векторами и последовательностями

  1. (Скалярное произведение. Модуль вектора.)

    1. Вычислить скалярное произведение векторов и .

    2. Вычислить косинус угла между векторами и по формуле , где – модуль вектора .

  2. (Из математической статистики.) Для случайной выборки вычислить: – выборочное среднее; – выборочную дисперсию; , и – выборочные центральные моменты порядков r=2,3 и 4; и – характеристики асимметрии и эксцесса – по формулам:

, ,

, , .

  1. (Гармоническое среднее.) Для вектора вычислить гармоническое среднее его компонент

.

Положить S=0, если при вычислении возникает деление на нуль.

  1. (Минимальные и максимальные компоненты вектора.) Даны (целочисленный или вещественный) вектор и натуральные числа k, l, m, причем k<n и l m n. Вычислить:

    1. значения минимальной и максимальной компонент в подвекторе ( );

    2. значение индекса максимальной компоненты в подвекторе , причем если несколько компонент имеют максимальное значение, то вычислить значения индекса первой и последней из этих компонент;

    3. число компонент в с минимальным значением;

    4. значение индекса предпоследней компоненты среди компонент вектора , принимающих минимальное значение. (Здесь предполагается, что имеется не менее двух компонент с минимальным значением.)

Указание. Разрешается только однократный просмотр вектора (например, слева на право).

  1. (Построение векторов.) Построить векторы , и с компонентами

, , .

(Отметим, что при k→∞.)

  1. (Построение векторов знакоперемен и нарушения упорядоченности.) По заданному (целочисленному или вещественному) вектору построить целочисленные векторы и с компонентами

если < 0,

если ,

в противном случае;

в противном случае.

  1. (Табулирование функции – это процесс получения таблицы значений функции в заданных точках.). Вычислить значения функции y=f(x) в заданных точках . Результаты напечатать в виде таблицы.

Варианты задания:

а)

;

б)

если , ,

в остальных случаях;

в)

если ,

если ,

где символ означает суммирование по тем , для которых и ( и – заданные числа).

  1. (Операции над множествами.) Дано некоторое множество из m элементов. Каждое его подмножество Т может быть представлено своим характеристическим вектором , где

если ,

если .

Подмножеству Т сопоставляется номер (Отметим, что и , где  – пустое множество.)

Пусть T1 и T2 – подмножества в S, представленные характеристическими векторами b(T1) и b(T2).

    1. Вычислить card (T1) – число элементов в T1.

    2. Установить истинность включения .

    3. Построить векторы b(T) для

.

    1. Вычислить n(T1) – номер подмножества T1.

    2. По номеру подмножества T1 построить вектор b(T1).

  1. (Десятичное представление натурального числа.) Для заданного натурального числа n (n<109) построить вектор c=(c1,…,c9), где cssая цифра (литера) в десятичной записи числа n. (Младшие разряды – справа. Таким образом, n=c1108+c2107+…+c9.)

  1. (Построение вектора.) По заданному вещественному вектору x=(x1,…,xn) построить вектор y=(y1,…,yn), компоненты которого определяются по формуле

, s=1,2,…,n.

  1. (Преобразование векторов.)

    1. Записать вектор x=(x1,…,xn) в обратном порядке. (Другими словами, построить вектор y=(xn,xn1,…,x1).)

    2. Осуществить циклический сдвиг вектора x=(x1,…,xn) влево и вправо на одну позицию. (Другими словами, построить векторы y=(x2,…,xn,x1) и z=(xn,x1,…,xn1).)

    3. Для вектора x=(x0,…,x32) построить вектор

y=(x1, x2, x0, x4, x5, x3, x7, x8,x6,…, x31, x32, x30).

    1. Для вектора x=(x1, x2,…,x2n) построить вектор

y=(x2n, x3, x2, x5, x4, x7,x6,…, x2n1, x2n-2, x1).

(Другими словами, компоненты с четными индексами циклически сдвигаются вправо, а с нечетными – влево.)

    1. Для векторов x=(x0,…,xn–1) и y=(y0,…,yn–1) построить вектор z=(z0,…,z3n1), где

, , , k=0,1,…,n1.

12. (Цепные дроби.) Вычислить:

а) y=[a1; bn–1, a2; bn–2, a3; …; b1, an];

б) y=[xn; a1n!, xn–1; a2(n­–1)!, xn2; …; an12!, x1; an1!, x0],

где [s0; r1, s1; r2, s2; …; rn, sn] обозначает “многоэтажную” цепную дробь

.

13. (Обработка упорядоченной последовательности.) Дана последовательность x=(x1,…,xn) натуральных чисел, упорядоченных по неубыванию, т.е. x1  x2 … xn. Элемент последовательности x назовем одиночкой, если его значение отлично от значения любого другого элемента в x. Группу элементов xm+1, xm+2, …, xm+k назовем цепочкой длины k (k1), если xm < xm+1=xm+2=…=xm+k xm+k+1.

  1. Вычислить s – количество цепочек в x.

  2. Построить вектор y=(y1,…,yn), где

  1. Построить вектор v=(v1,…,vn), где vi – количество цепочек в x длины i.

  2. Построить вектор u=(u1,…,un), где ui – длина i-ой цепочки. (Если в x содержится k<n цепочек, то положить ui=0 для i>k.)

  3. Построить векторы a=(a1,…,an) и b=(b1,…,bn), где ai и bi – индексы первого и последнего элементов в i-ой цепочке. (Если в x содержится k<n цепочек, то положить ai=bi=0 для i>k.)

  4. Вычислить t – количество одиночек в x.

  5. Построить вектор w=(w1,…,wn), где

  1. Построить вектор z=(z1,…,zn), где

Пример. Пусть x=(12,2,23,3456,68). Тогда а) s=7; б) y=(1,2,0,0,3,0,4,5,6,0,8); в) u=(1,3,2,1,1,2,1,0,0,0,0); г) v=(4,2,1,0,0,…,0); д) a=(1,2,5,7,8,9,11,0,…,0), b=(1,4,6,7,8,10,11,0,…,0); е) t=4; ж) w=(1,0,0,0,0,0,4,5,0,0,8); з) z=(0,2,0,0,3,0,0,0,6,0,0).

14. (Массивы переменной длины, или три вариации на тему задачи 13.) Дана последовательность x=(x1,…,xn) натуральных чисел, упорядоченных по неубыванию, т.е. x1  x2 … xn.

  1. Образовать новую последовательность x', включая в нее по одному элементу каждой цепочки из x.

  2. Образовать новую последовательность x'', исключая из x одиночки.

  3. Образовать новую последовательность x''', исключая из x цепочки длины ≥2 (то есть, включая в x''' только одиночки).

Пример. Для x=(14,46,6,69) имеем: а) x'=(1,4,6,9); б) x''=(4,6); в) x'''=(1,9). Если в используемом языке программирования отсутствует массивы переменной длины, то следует получить такие последовательности: а) x'=(1,4,6,9,0,0,0); б) x''=(4,6,0,0,0,0,0); в) x'''=(1,9,0,0,0,0,0), заполняя свободные "хвосты" последовательностей нулями.

15. (Неубывающие цепочки.) Дана последовательность x=(x1,…,xn) натуральных чисел. Ее подпоследовательность (xm+1, xm+2,…, xm+k) назовем неубывающей цепочкой длины k, если xm+1xm+2 … xm+k, но xm > xm+1 и xm+k > xm+k+1.

  1. Вычислить s – длину самой короткой и t – длину самой длиной из неубывающих цепочек в x.

  2. Построить вектор u=(u1,…,un), где uk – число неубывающих цепочек в x длины k.

  3. Построить векторы v=(v1,…,vn), w=(w1,…,wn), где vi и wi – индексы 1-го и последнего элементов в i-ой цепочке последовательности x. (Если в x содержится l<n цепочек, то положить vi=wi=0 для i>l.)

Пример. Пусть x=(1,2,3,843,5431,72). Тогда а) s=1, t=4; б) u=(4,2,0,1,0,…,0); в) v=(1,5,6,8,9,10,12,0,…,0), w=(4,5,7,8,9,11,12,0,…,0).

16. (Тригонометрическое интерполирование.) Даны m значений yk=y(xk) функции y(x) в точках xk=kT/m, k=0,1,…,m–1. Требуется аппроксимировать y(x) на интервале (0,T) тригонометрическим полиномом

, ,

так, чтобы минимизировать величину – сумму квадратов отклонений. Известно, что коэффициенты Ai и Bi, удовлетворяющие этим требованиям, определяются по формулам

, , .

Вычислить коэффициенты Ai, Bi аппроксимирующего тригонометрического полинома.

17. (Треугольник Паскаля.) Построить вектор c=(c0,c1,…,cn), где – число сочетаний из n элементов по i.

Указание: для i=1,2,…,n–1; .

18. (Н.О.Д.) Вычислить dn=Н.О.Д.(u1,u2,...,un).

Указание: d1=u1; dn=Н.О.Д.(dn–1,un), n ≥ 2 (см. задачу I.1.8).

19. (Число способов образования бинарного, но не ассоциативного произведения n сомножителей.) Последовательность чисел a1, a2,… определена рекуррентно:

a1=1;

an=a1an–1+a2an–2+…+an–1a1, n ≥ 2.

  1. Построить вектор (a1, a2, …, a16).

  2. Проверить для k=1,2,…,16, что .

Примечание. Числа ak, называемые числами Каталана, имеют следующий комбинаторный смысл: ak равно числу возможных способов расстановки скобок в произведении x1x2xn. Например, для k=4 возможны лишь такие расстановки: ((x1x2)x3)x4, (x1x2)(x3x4), (x1(x2x2))x4, x1((x2x3)x4), x1(x2(x3x4)), т.е. ak=5.

20. (Табулирование функции, представленной рядом.) Вычислить значения функции f(x) в заданных точках x=(x1,…,xn). В качестве f(x) взять одну из функций:

  1. ;

  2. ;

  3. ;

  4. .

Варианты задания:

  1. при вычислении бесконечной суммы суммирование прекратить, как только очередной член ряда становится по абсолютной величине ≤ε (здесь ε>0 – заданное число);

  2. в бесконечной сумме учесть только первые m слагаемых (здесь m – заданное натуральное число).

Замечание. Пусть k – любое из чисел 1, 2, 3 или 4, f=fk, а f*(x) – вычисленное значение функции f в точке x. Из теории известно, что если 0≤x<1, то f(x)=(arcsin x)k, и, следовательно, . Поскольку f*(x) есть приближенное значение для f(x), то, вообще говоря, f*(x)f(x) и . Полезно вычислить значения величин:

,

для xi=0.05, 0.10, 0.15, …, 0.95 и по их отклонению от 0 судить о том, насколько точно величины f*(xi) оценивают f(xi).

21. (Поиск приближенных формул.) Авторы где-то читали (но забыли, где конкретно), что где fk(x) обозначает сумму

.

  1. Подобрать для каждого xm=0.01m, m=1, 2, …, 99, такое наименьшее натуральное число km, что

, (*)

где >0 – заданное число.

  1. Напечатать таблицу значений xm, km, для m= –99, –98,…, –1, 1, 2,…,99.

  2. Вычислить коэффициенты a2, a3, …, ak+1 многочлена a(x)=a2x2+a3x3+…+ak+1xk+1 такого, что a(x)=fk(x), где k – максимальное из чисел k99,…,k1, k1,…,k99.

Замечание. В результате можно получить приближенную формулу . Чтобы оценить качество этой формулы, проведите соответствующий эксперимент, вычисляя значения и a(x) в нескольких точках, например, для x=0,01m, m=1,2,…,99. Другой вариант задания состоит в замене условия (*) на

. (**)

  1. Проделать то же самое для соотношения

Указание. Для вычисления натурального логарифма и арктангенса использовать стандартные арифметические функции ln(x) и arctan(x).

22. (Обработка целочисленного вектора.) Дан целочисленный вектор .

  1. Вычислить S – сумму положительных (отрицательных) компонент вектора a.

  2. Вычислить q – число перемен знака в последовательности компонент вектора a.

  3. Установить, упорядочены ли компоненты вектора a по возрастанию или убыванию.

  4. Установить, имеются ли у вектора a одинаковые компоненты.

  5. Компоненту ai вектора a назовем уникальной, если ее значение отлично от значения других компонент. Вычислить t – число уникальных компонент вектора a.

  6. Вычислить r – число различных значений, которые имеют компоненты вектора a. (Другими словами, если , то компоненты учитываются при подсчете как одна компонента.)

  7. Вычислить p – число компонент вектора a, значения которых являются простыми числами.

  8. Преобразовать вектор a, помещая отрицательные компоненты в начало вектора, а положительные – в конец. Рассмотреть два варианта алгоритма: (1) используя вспомогательный массив и (2) не используя его.

  9. Предположим, что компоненты вектора a упорядочены, а именно: a1a2≤…≤an. Для заданного целого числа m установить, существует ли индексы i и k такие, что 1≤ikn и ai+ai+1+…+ak=m.

  10. Вычислить l – число компонент вектора a, взаимно простых с заданным числом k.

23. (Вектор попаданий в интервалы.) Дан вещественный вектор . Построить вектор s=(s1,…,st), где sj равно числу компонент вектора x, принадлежащих интервалу [a+(j–1)h, a+jh), j=1,…,t. Рассмотреть следующие варианты задания:

  1. a (левая граница первого интервала) и h (длина интервала) заранее заданы;

  2. считать, что компоненты вектора x упорядочены по неубыванию, т. е. x1x2≤…≤xn; положить , a=x1, b=xn.

24. (Числа Фибоначчи.) Числа Фибоначчи Fn определяются так: F0=0, F1=1; Fn=Fn1+Fn–2 для n=2,3,…

Проверить следующие свойства чисел Фибоначчи для m, n≤30:

  1. если m=2n+1, то Fm=1+F2+F4+…+F2n;

  2. если m=2n+2, то Fm=F1+F3+F5+…+F2n+1;

  3. если m=3n, то ;

  4. если m=n+k, то Fm=Fn1Fk+FnFk–1 (1≤k, nm1);

  5. если m делится на n; то Fm делится на Fn;

  6. если m=2n+1 или 2n+2, то

  1. н.о.д.(Fn, Fn+1)=1.

Указание: построить предварительно массив (F0, F1,…,F30).

25. (Фибоначчиeва система счисления.) Известно, что каждое целое число n ≥ 1 можно однозначно представить в виде

, (*)

где Fmm-ое число Фибоначчи (см. задачу 24), kr ≥ 2, ki–1 ≥ ki+2. Получить разложение (*) для произвольного n ≤ 1000000.

Указание. Имеется 31 число Фибоначчи, не превосходящих 1000000. Для получения разложения (*) требуется построить двоичный вектор (x0,x1,…,x30), у которого все компоненты нулевые, кроме компонент (с индексами k1,…,kr), которые равны 1. При этом индекс k1 равен наибольшему k, для которого nFk, k2 равен наибольшему k, для которого и т.д.

26. (Логарифмически вогнутая последовательность.) Последовательность вещественных чисел a=(a1,…,an) называется логарифмически вогнутой, если для k=2,3,…,n–1. Для заданной последовательности

  1. установить, является ли она логарифмически вогнутой;

  2. найти наибольшее m (mn), при котором подпоследовательность (a1,…,am) логарифмически вогнута;

  3. найти наибольшее m, для которого существует r такое, что подпоследовательность (ar+1,ar+2,…,ar+m) логарифмически вогнута (здесь 0≤rnm).

27. (Разреженные векторы.) Вещественный вектор a=(a1,…,an), большинство компонент которого равно нулю, назовем разреженным вектором. (Понятие "большинство" здесь никак не определяется и требует уточнения.) Такой вектор иногда удобно представлять в уплотненном виде парой <b,m>, где b и m векторы, в которых перечислены в одинаковом порядке соответственно ненулевые компоненты и номера (индексы) ненулевых компонент вектора a. (Например, если a=(0,1,10,5,0,0,4,0), то b=(1,10,5,4) и m=(2,3,4,7).)

  1. Построить уплотненное представление <b,m> разреженного вектора a.

  2. Выполнить обратное преобразование от <b,m> к a.

  3. Найти значение ai (i-ой компоненты вектора a) по заданной тройке <i,b,m>.

  4. Вычислить скалярное произведение двух векторов, представленных в уплотненном виде.

28. (Слияние упорядоченных последовательностей.) Слить две упорядоченные последовательности x=(x1,…xm) и y=(y1,…yn) такие, что x1x2≤…≤xm и y1y2≤…≤yn, в одну упорядоченную последовательность z=(z1,…zn+m) так, чтобы z1z2≤…≤zm+n. (Например, для x=(0,0,1,1,5,6,6) и y=(0,1,3,3,7) должны получить z=(0,0,0,1,1,1,3,3,5,6,6,7).)

Указание. Полезно удлинить x и y на один элемент, полагая xm+1=ym+1=max{xm,yn}. (Почему?)

29. (Логарифмический поиск, или метод деления пополам.) Даны набор чисел такой, что , и число y. Вычислить индекс k, для которого . (Если y или xn<y, то положить соответственно k=m и k=n+1.)

Указание. Можно последовательно (начиная с ) просмотреть набор x и найти соответствующее k. Однако, здесь это не лучший способ: такой поиск требует в среднем O(n) операций сравнения, в то время как можно предложить более быстрый алгоритмы. Следующий способ вычисления k требует O(log2n) операций сравнения. Разобьем набор x пополам, на два поднабора и , где s – целая часть от деления nm+1 на 2. Если yxs, то, очевидно, ks; в противном случае k>s. В первом случае, чтобы найти k, нужно провести соответствующий поиск в поднаборе x', а во втором – в поднаборе x''. Деление соответствующих поднаборов продолжается до тех пор, пока не будет получен поднабор из одного числа. Проиллюстрируем это на следующем примере (для y=5):

1

2

3

4

5

6

7

8

9

10

11

-индексы

x=

1

2

2

3

4

4

6

7

8

9

9

-исходный набор

4

6

7

8

9

9

-шаг 1

4

6

7

-шаг 2

6

7

-шаг 3

6

-шаг 4

-искомый индекс k=7

30. (Сортировка по методу "пузырька".) Упорядочить (то есть переставить) элементы числовой последовательности x=(x1,…,xn) по неубыванию их значений, используя метод "пузырька".

Указание. Метод "пузырька" основан на следующей идее: "легкие" элементы всплывают, "тяжелые" – оседают на дно. Применительно к x это означает, например, следующее:

Первый алгоритм. В множестве xi,xi+1,…,xn найдем минимальный элемент xj, а затем поменяем xi и xj местами. Эти действия последовательно повторяем для i=1,2,3,…,n–1.

Второй алгоритм. Осуществим просмотр x, сравнивая при этом соседние элементы xi и xi+1 для i=1,2,… Каждый раз, когда xi>xi+1, элементы xi и xi+1 меняем местами. Эти действия повторим для подпоследовательностей . Алгоритм прекращает работу, если при просмотре очередной последовательности ни одна пара соседних элементов не меняется местами.

Дополнительное задание. Оценить временную сложность предложенных алгоритмов.

31. (Алгоритм Дж. фон Неймана.) Метод сортировки последовательности x=(x1,…,xn), предложенный в задаче 30, привлекает своей простотой. Однако он требует выполнения O(n2) операций сравнения и перестановки, в то время как существует более быстрые методы. Так, в методе, предложенном американским математиком Дж. фон Нейманом, требуется O(n log2n) операций. Суть этого метода заключается в следующем:

  1. Если n=1, то последовательность x упорядочена.

  2. Если , то разобьем x на две части x'=(x1,…,xm) и x''=(xn+1,…,xn) примерно одинаковой длины (а именно: m=s, если n=2s или 2s+1). Далее упорядочиваем отдельно x' и x'', а затем сливаем их в одну упорядоченную последовательность x (см. задачу 28).

Этот метод иллюстрируется на следующем примере, где цифрами 1,2,3 обозначены шаги алгоритма, на которых сливаются соответствующие подпоследовательности:

5

4

2

7

9

1

8

4

5

2

7

1

9

8

2

4

5

7

1

8

9

1

2

4

5

7

8

9

Отметим, что при использовании этого метода возникает необходимость во вспомогательном массиве y такой же длины, что и x, необходимом для слияния подпоследовательностей; иначе число перемещений элементов резко возрастает.

Конкретное задание. Упорядочить последовательность x, используя предложенный алгоритм. Для простоты взять .

32. (Двоичные векторы длины n.) Построить все двоичные векторы длины n. (Например, для n=3 необходимо построить векторы 000,001,010,011,100,101,110,111.)

33. (Обработка изоморфных объектов.) В векторе , компоненты которого суть объекты одного и того же типа (числа, векторы, матрицы и т. д.), могут быть одинаковые компоненты. Из каждой группы тождественных между собой компонент оставить только одну компоненту, вычеркивая остальные, понимая под вычеркиванием компоненты замену ее значения на некоторое "пустое" значение.

34. (Любое натуральное число есть сумма не более, чем девяти кубов.) Найти все решения уравнения в целых числах . Здесь N равно порядковому номеру того года, когда решается эта задача.

Указание. 9-кратный цикл – здесь неприемлемое решение.

35. (Аддитивные цепочки.) Последовательность натуральных чисел называется аддитивной цепочкой для числа m, если

  1. a1=1, an=m;

  2. a1<a2<…<an;

  3. для любого i=2,3,…,n элемент ai представим в виде ai=aj+ak при некоторых . (Если при этом j=i–1, то цепочку называют линейной.)

Установить, является ли заданная последовательность аддитивной цепочкой для заданного числа m; если да, то является ли она линейной. (Пример линейной аддитивной цепочки: 1,2,4,8,9,17,18,35.)

36. (Аддитивно-разностные цепочки.) Последовательность натуральных чисел называется аддитивно-разностной цепочкой для числа m, если

  1. a1=1, an=m;

  2. для любого i=2,3,…,n элемент ai представим в виде или ai=aj+ak при некоторых j,k<i.

Установить, является ли заданная последовательность аддитивно-разностной цепочкой для заданного числа m.

37. (Аддитивные базисы.) Последовательность неотрицательных целых чисел называется аддитивным базисом для множества , если любое число s представимо в виде s=ai+ak для некоторых .

Установить, является ли данная последовательность аддитивным базисом для Mm, где – заданное целое.

38. (Одно преобразование из поточного шифра Panama.) Отображение, заданное на множестве двоичных векторов длины n сопоставляет вектору (a0,a1,…,an–1) вектор (b0,b1,…,bn–1), компоненты которого определяются как

bi=(ai+ai+1ai+2+ai+2+1) mod 2, i=0,1,...,n–1,

где индексы приводятся по модулю n, т.е. , . При четном n это отображение не является взаимно однозначным, поскольку векторы (0,0,…,0) и (0,1,0,1,…,0,1) отображаются в один и тот же вектор (1,1,…,1). При n=3 отображение является взаимно однозначным, в чем, например, можно убедиться, построив соответствующую таблицу:

a0a1a2

000

001

010

011

100

101

110

111

b0b1b2

111

010

100

101

001

110

011

000

Установить, будет ли указанное отображение взаимно однозначным при n=5,7,9,11,13,15,17.