Научная статья на тему 'Практическая дискретная математика и математическая логика (практические занятия 1-3)'

Практическая дискретная математика и математическая логика (практические занятия 1-3) Текст научной статьи по специальности «Математика»

CC BY
1536
777
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДИСКРЕТНАЯ МАТЕМАТИКА / МАТЕМАТИЧЕСКАЯ ЛОГИКА / МНОЖЕСТВО / АЛГЕБРА ЛОГИКИ / THE DISCRETE MATHEMATICS / MATHEMATICS OF LOGIC / ENSEMBLE / ALGEBRA OF THE LOGIC

Аннотация научной статьи по математике, автор научной работы — Тюрин Сергей Феофентови, Аляев Юрий Александрович

Предлагается методика решения задач на практических занятиях по дисциплине «Дискретная математика и математическая логика», разработанная и применяющаяся на практике в вузах Пермского края

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Practical discrete mathematics and mathematics of logic (practical occupations 1-3)

The technique of solving problems on a practical training on discipline «Discrete mathematics and mathematical logic» developed and applied in practice in the universities of the Perm region

Текст научной работы на тему «Практическая дискретная математика и математическая логика (практические занятия 1-3)»

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

Methods of the quick education to programming on base of the study of the classes of the problems (8-10)

Yuri Alexandrovich Alyaev, assistant professor, assistant professor of the pulpit of software of the computing machinery and automated systems, Perm military institute of internal troops of the MIA

Is offered methods of the quick education to programming on base of the study of the classes of the problems, designed and using in practice in process of the education to programming student high school.

Keywords: algorithm, program, programming language Pascal, array

УДК 519.1(075.8)+510.6(075.8)

ПРАКТИЧЕСКАЯ ДИСКРЕТНАЯ МАТЕМАТИКА И МАТЕМАТИЧЕСКАЯ ЛОГИКА (практические занятия 1-3)

Сергей Феофентович Тюрин, профессор, профессор кафедры автоматики и телемеханики,

E-mail: [email protected],

Пермский национальный исследовательский политехнический университет,

http://pstu.ru,

Юрий Александрович Аляев, доцент, доцент кафедры программного обеспечения вычислительной техники и автоматизированных систем,

E-mail: [email protected],

Пермский военный институт внутренних войск МВД России,

http://pvivv.ru

Предлагается методика решения задач на практических занятиях по дисциплине «Дискретная математика и математическая логика», разработанная и применяющаяся на практике в ву-зах Пермского края.

Ключевые слова: дискретная математика, математическая логика, множество, алгебра логики

«...Всё те же мы - в углах дизъюнкций, В узлах завязанных конъюнкций, И вновь - инверсии черта!..»

С.Ф. Тюрин

Предисловие

Издавая в 2006 г. учебник «Дискретная математика и математическая логика» [1], авторы планировали вслед за ним издать и задачник. Переосмыслив имеющийся материал в последующие годы, они пришли к выводу о необходимости подготовки не совсем учебника, но советчика и подсказчика. Кроме того, был накоплен новый, интересный материал. Акцент сделан на практику, поскольку известно, что именно умение решать задачи является мерилом математического знания.

В предлагаемой серии статей нашёл отражение опыт многолетнего преподавания авторами дисциплин «Дискретная математика» и «Математическая логика и теория алгоритмов» в вузах Пермского края.

С.Ф. Тюрин

Образовательные ресурсы и технологии^2015’4(12)

43

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

Информационные технологии ушли далеко вперёд, но задача распознавания компьютером правильного ответа решается до сих пор тривиально - определением выбора одного заданного номера из n ответов. Причём, n-1 - неправильных ответов. На самом деле, в дискретной математике, в логике, часто правильными могут быть разные ответы, например, разные дизъюнктивные нормальные формы с одинаковым количеством букв - при минимизации переключательных функций.

Кроме того, приведение неправильных ответов, по мнению авторов, приводит к «рекламному» эффекту, - запоминаются именно они, причём, самые несуразные.

Поэтому принято решение не разрабатывать так называемые тесты, а большую часть сил бросить на разъяснение методики решения типовых задач, выносимых на практические занятия по указанной тематике.

Авторы посвящают серию статей своим учителям: Л.Ф.

Викентьеву, Т.И. Когану, В.А. Несмелову, а также памяти Пермского военного института ракетных войск (1931-2003 гг.).

Ч а с т ь 1

ДИСКРЕТНАЯ МАТЕМАТИКА

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 Выполнение операций над множествами

Цель занятия: научиться выполнять операции над множествами, заданными перечислением элементов, формулами, диаграммами Эйлера, а также десятичным номером.

Методика решения задач

З а д а ч а 1. Даны множества А={2,3,4,5} и B={4,5,7} на универсуме десятичных цифр. Выполнить операцию объединения над множествами AoB.

Строим множество, выбирая элементы из множества А, а затем, добавляем недостающие элементы из В, получаем:

AoB={2,3,4,5,7}.

Очевидно, что в соответствие с определением множества, каждый элемент входит в него только один раз, то есть элементы 4,5 учтены по одному разу.

Задача 2. Выполнить операции над множествами, заданными формулой:

M 01.

В таких задачах множества: M - произвольное, I - универсальное (универсум), 0 - пустое.

Вначале выражаем симметрическую разность через объединение двух разностей:

M0I=(M\I)^(I\M).

Анализируем первую круглую скобку: если из произвольного множества M вычесть универсум I, то, очевидно, ничего не останется, то есть, точнее, останется пустое множество 0.

Если из универсума I вычесть произвольное множество М, то будет получено дополнение М.

Выполняя дополнение дополнения, получим М = М .

Таким образом, M 01 = (M \ I) ^ (I \ M) = 0 ^ М = M = M.

Задача 3. Выполнить операции над множествами, заданными формулой (A0B)uC, с использованием диаграмм Эйлера. Заштриховать соответствующую формуле область на диаграмме Эйлера для трех взаимно пересекающихся множеств А, В, С и записать ответ в стандартном виде, т.е. в виде объединения пересечений с использо-

44

Образовательные ресурсы и технологии^2015’4(12)

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

ванием, где необходимо, операции дополнения (в виде конституент единицы - I, либо нуля - 0).

Изобразим диаграмму Эйлера для трёх взаимно пересекающихся множеств - рисунок 1. Выделим штриховкой симметрическую разность множеств А®В, а затем объединим её с множеством С.

Рисунок 1 — Диаграмма Эйлера для множества, заданного выражением (A0B)uC

Записываем в виде объединения конституент I:

(А 0 В) и С = (А п B п С) и (А п В п С) и (A п B п С) и (A п В п С) и (А п В п С) и

(А п В п С).

Легко видеть, что в виде пересечения конституент 0 множество будет выглядеть следующим образом:

(А 0 В) и С = (А и В и С) п (А и В и С).

З а д а ч а 4. По заданному десятичному числу 131 заштриховать на диаграмме Эйлера для трех взаимно пересекающихся множеств А,В,С соответствующую область и записать её в виде объединения конституент единицы и нуля.

Выполнить дополнение множества № 131, а также операции объединения, пересечения, разности и симметрической разности множества № 131 с множеством № 100.

Пусть задано множество № 131 на универсуме из трёх взаимно пересекающихся множеств А,В,С. Получим двоичный код десятичного числа: 13110 = (1-27+0-26 +0-25 +0-24 +0-23 +0-22+1-21+1-2°) = 100000112.

Получим таблицу конституент I (таблица 1).

Таблица 1

Таблица конституент I множества № 131

Множества КонституентаI Двоичный код

А В С

0 0 0 A п B п C 1

0 0 1 A п B п С 1

0 1 0 нет 0

0 1 1 нет 0

1 0 0 нет 0

1 0 1 нет 0

1 1 0 нет 0

1 1 1 А п В п С 1

2

2

2

2

2

2

2

2

0

1

2

3

4

5

6 7

Образовательные ресурсы и технологии^2015’4(12)

45

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

В соответствие с данными таблицы 1 искомое множество представляется выраже-111 А А 1 А А А нием: М№131 = (Ап Во С) о (Ап Во С) о (Ао Во С).

Здесь над буквенными символами множеств в пересечениях указано входит ли оно в соответствующий заштрихованный сектор диаграммы Эйлера (1), либо не входит (0), таким образом, чтобы в каждой скобке получить единицу (дополнение нуля - единица).

Изобразим диаграмму Эйлера (рисунок 2).

1 1 1

AoBoiC

0 0 1

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

АоВоС

.....

AoBoiC

Рисунок 2 — Диаграмма Эйлера для множества

111 А А 1 а А 0 М№131 = (Ао Во С) о (Ао Во С) о (Ао Во С)

Нетрудно видеть, что множество № 131 в виде конституент 0 в соответствие с данными таблицы 2.

Таблица конституент 0 множества № 131

Множества Конституента 0 Двоичный код

А В С

о о о нет 1

о о 1 нет 1

о 1 о А о B о С о

о 1 1 А о B о С о

1 о о А о В о С о

1 о 1 А о В о С о

1 1 о А о В о С о

1 1 1 нет 1

20

21

22

23

24

25

26

27

Таблица 2

представляется выражением:

оАо оАА Аоо АоА ААо М№131 = (Ао Во С) о (Ао Во С) о (Ао Во С) о (Ао Во С) о (Ао Во С).

Здесь, наоборот, в объединениях над символами множеств, соответствующих не заштрихованным секторам диаграммы Эйлера, ставятся нули, а над символами дополнений множеств - единицы, таким образом, чтобы в каждой скобке получить нуль (дополнение единицы - нуль).

Выполним операции над множеством, заданным десятичным числом № 131.

Получим дополнение этого множества путём замены нулей на единицы и единиц на нули (таблица 3). Номер определенного таким образом множества - 124. Нетрудно видеть, что он получается путём вычитания номера 131 из 255, где 255 - это универсум для трёх взаимно пересекающихся множеств, то есть вектор из 8 единиц (единичный байт).

46

Образовательные ресурсы и технологии^2015’4(12)

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

Таблица 3

Дополнение множества № 131

1 0 0 0 0 0 1 1 № 131

0 1 1 1 1 1 0 0 № 124

Получим объединение множества № 131 с множеством № 100: в таблице 4 единица в результате указывается в том случае, если в соответствующем столбце имеется единица хотя бы в одном множестве. Номер полученного множества 231. Нетрудно видеть, что в данном случае номер результата получается путём суммирования номеров исходных множеств.

Таблица 4

Объединение множества № 131 и множества № 100

1 0 0 0 0 0 1 1 № 131

0 1 1 0 0 1 0 0 № 100

1 1 1 0 0 1 1 1 № 231=(№ 131)и(№ 100)

Получим пересечение множества № 131 с множеством № 100: в таблице 5 единица в результате получается в том случае, если имеются совпадения единиц в исходных множествах. В нашем случае таких совпадений нет, поэтому в результате получается пустое множество № 0.

Таблица 5

Пересечение множества № 131 и множества № 100

1 0 0 0 0 0 1 1 № 131

0 1 1 0 0 1 0 0 № 100

0 0 0 0 0 0 0 0 № 0=(№ 131)п(№ 100)= 0

Получим разность множества № 131 с множеством № 100: в таблице 6 единица в результате получается в том случае, если у уменьшаемого множества в столбце находится единица, а у вычитаемого множества в соответствующем столбце - нуль. Таким образом, в результате получим множество № 131.

Таблица 6

Разность множества № 131 и множества № 100

1 0 0 0 0 0 1 1 № 131

0 1 1 0 0 1 0 0 № 100

1 0 0 0 0 0 1 1 № 131=(№ 131)\(№ 100)

Получим симметрическую разность множества № 131 с множеством № 100: в таблице 7 единицы в результате указываются в случае комбинаций 01 или 10 в соответствующих столбцах множеств. Номер определенного таким образом множества - 231.

Таблица 7

Симметрическая разность множества № 131 и множества № 100

1 0 0 0 0 0 1 1 № 131

0 1 1 0 0 1 0 0 № 100

1 1 1 0 0 1 1 1 № 231=(№ 131) 0 (№ 100)

Образовательные ресурсы и технологии^2015’4(12)

47

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 2 Решение теоретико-множественных задач с использованием законов алгебры Кантора

Цель занятия: научиться выполнять операции над множествами, заданными формулами, используя законы алгебры Кантора.

Методика решения задач

З а д а ч а 1. Доказать равенство множеств алгебраически:

A \ (A \ B) = A о B.

Преобразуем левую часть формулы, выразив разность через алгебраические операции пересечения и дополнения:

А \ (А \ В) = А о А о В .

Выполняем закон де Моргана:

А о А о В = А о (А и В).

Применяем закон Порецкого:

А о (А и В) = А о В .

З а д а ч а 2. Решить уравнение с одним известным множеством:

((Е \ Х) о (Х и (Е о Х))) и (Е о Х) = 0 .

В задачах такого типа необходимо привести выражение к симметрической разности неизвестного Х и известного Е множеств. Для этого применяем законы алгебры Кантора.

Вначале выражаем разность через пересечение и дополнение:

((Е \ Х) о (Х и (Е о Х))) и (Е о Х) = (Е о Х) о (Х и (Е о Х)) и (Е о Х) = 0 .

Применив закон поглощения, получаем:

(Е о Х) и (E и Х) = 0 .

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

(Е о Х) о (Х и (Е о Х)) и (E о X) = (Е о Х о Х) и (Е о Х о Е о Х) и (Е о Х).

Очевидно, что первая скобка приводит к получению пустого множества, поэтому получим:

(Е о Х о Е о Х) и (Е о Х).

Упрощая по закону повторения, получаем (Е о Х) и (Е о Х). Видим, что имеется

симметрическая разность: (Е о Х) и (Е о Х) = Е 0 Х.

Отсюда Е=Х.

З а д а ч а 3. Решить уравнение с двумя известными множествами:

X и C = D.

При решении уравнений в алгебре множеств исходят из того, что:

1) два множества равны тогда и только тогда, когда их симметрическая разность пуста;

2) определяются условия, при которых уравнения имеют решение.

Преобразуем уравнение к виду (X и C) 0 D = 0.

Любое уравнение, в правой части которого указано пустое множество, может быть преобразовано в уравнение с декомпозицией по неизвестному множеству X:

(F о X) и (F2 о X) = 0, где F15 F2 - формулы, не содержащие X.

Очевидно, что объединение пусто тогда и только тогда, когда объединяемые множества пусты: (F1 о X) = 0 и (F2 о X) = 0 .

48

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Образовательные ресурсы и технологии^2015’4(12)

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

Полученные два уравнения и исходное уравнение имеют решение тогда и только тогда, когда F2 с X с F1 .

Поэтому необходимо определить F15 F2, что и является результатом решения уравнения.

Итак, (X u C) 0 D = 0. Декомпозицию по X выполним, используя формулу симметрической разности двух множеств, использующей только операции объединения, пересечения и дополнения:

[(X u C) n D] u [(X u C) n D] = 0 , где [(X u C) n D] - разность (X u C) \ D,

[(X u C) n D] - разность D \ (X u C) .

Выполняем алгебраические операции:

[(X n D) u (C n D)] u [X n C n D] = 0.

В этой формуле не хватает пересечения известных множеств CnD с неизвестным множеством X или его дополнением X . Этого можно добиться, используя пересечение с универсальным множеством, представленным в виде (X u X):

[(X n D) u (C n D) n (X u X)] u [X n C n D] = 0.

Далее раскрываем скобки и применяем законы алгебры множеств:

(X n D) u (C n D n X) u (C n D n X) u (X n C n D) = 0.

Здесь налицо поглощение: (X n D) u (C n D n X) = (X n D), поэтому:

(X n D) u (C n D n X) u (X n C n D) = 0 .

Выносим X за скобку: (X n D) u {X n [(C n D) u (C n D)]} = 0 .

Обращаем внимание, что [(C n D) u (C n D)] = C 0 D , поэтому:

(XnD)u{Xn[C0D]} = 0 .

Таким образом: (X n D) = 0 , X n (C 0 D) = 0 , то есть (C 0 D) с X с D .

Для конкретных C,D имеется множество решений, удовлетворяющих такому выражению.

З а д а ч а 4. Получить алгебраически конституенты по формуле (A 0 B) u C. Заменим симметрическую разность алгебраическими операциями (A 0 B) u C = ((А n В) u (А n В)) u С.

Для получения конституент проведём своего рода «расклеивание» пересечений по

недостающим множествам, например, по С: С u С = I.

Очевидно, что пересечение с универсумом не изменяет выражения:

(А n В) n (С u С) u (А n В) n (С u С) u (А u А) n (В u В) n С.

Раскрываем скобки, стараясь соблюдать порядок следования букв А, В, С в пересечениях:

(А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С).

Исключаем некоторые конституенты по закону повторения:

(А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С) u (А n В n С). Получили те же конституенты, что и на диаграмме Эйлера (рисунок 1).

Образовательные ресурсы и технологии^2015’4(12)

49

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 3 Решение комбинаторных задач

Цель занятия: научиться решать типовые комбинаторные задачи и уравнения.

Методика решения задач

З а д а ч а 1. Определить количество вариантов выращивания трёх сортов зерновых культур на трёх различных полях. Предполагается, что на одном поле реализуется один вариант выращивания.

Каждый вариант выращивания зерновых в этом случае есть выборка (3,3), вектор длины три по числу полей, составленный из трехэлементного множества сортов Т^^,^,^}. Поэтому число вариантов выращивания - число размещений с повторениями из трех по три:

А3 = 33 = 27.

З а д а ч а 2. Сколько различных подарочных наборов из двух предметов к женскому дню 8 марта можно составить из трех типов товаров: парфюм, букет цветов, конфеты?

На первый взгляд речь идёт о размещениях с повторением (по условиям задачи не запрещено повторять товар, например, два парфюма, два букета цветов или две коробки конфет). Тогда получим А2 = 32 = 9. Перечислим все варианты:

Набор подарочный

парфюм парфюм

парфюм букет

парфюм конфеты

букет парфюм

букет букет

букет конфеты

конфеты парфюм

конфеты букет

конфеты конфеты

Ясно, что от перестановки товаров набор не меняется, то есть вместо девяти вариантов будет шесть: (два парфюма), (парфюм, букет), (два букета), (букет, конфеты), (парфюм, конфеты), (две коробки конфет).

Получим вектора - составы подарочных наборов в формализованном виде:

(2,0,0) - два парфюма;

(1,1,0) - парфюм, букет;

(0,2,0) - два букета;

(0,1,1) - букет, конфеты;

(1,0,1) - парфюм, конфеты;

(0,0,2) - две коробки конфет.

Видим, что вектора имеют следующую особенность: сумма их компонент равна 2.

Представим эти вектора в следующем виде: количество нулей в правой части таблицы будет определять количество товаров, а единицы будут разделителями:

Состав подарка

(2,0,0) - парфюм, парфюм, 1, 1 0 0 1 1

(1,1,0) - парфюм, 1, букет, 1 0 1 0 1

(0,2,0) - 1, букет, букет, 1 1 0 0 1

(0,1,1) - 1, букет, 1, конфеты 1 0 1 0

(1,0,1) - парфюм, 1, 1, конфеты 0 1 1 0

(0,0,2) - 1, 1, конфеты, конфеты 1 1 0 0

50

Образовательные ресурсы и технологии^2015’4(12)

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

Из таблицы следует, что речь идёт о перестановках с повторениями элементов вектора из двух нулей и двух единиц:

Р =

Р(2,2) 2!2!

4! 1-2 • 3 • 4

= 6

Это не что иное, как сочетания с повторениями из трех элементов (количество типов товаров равно трем) по два (количество предметов равно двум):

- 2 2 2 4! 4!

✓~ч2 /~ч2 _ /~ч2

C3 _ C3+2-1 C4 '

= 6

2!(4-2)! 2!2!

З а д а ч а 3. Решить комбинаторное уравнение CX+1 = 21.

Очевидно, что xeN, где N - множество натуральных чисел:

Сх-1 = 21 = (х +1)! = (х +1)! _(х -1)!х(х +1)

х+1 (х - 1)!(х +1-х +1)! (х -1)!2!

Отсюда, сокращая знаменатель:

х(х +!) = 21

(х-1)!2!

поэтому x(x+1)=42, причём х можно легко определить путём подбора. Нетрудно видеть, что х=6.

З а д а ч а 4. Определить число трёхэлементных подмножеств в четырёхэлементном множестве.

В случае выделения подмножеств из множества возникают неупорядоченные выборки без повторения элементов, т.е. сочетания без повторений. Таким образом, по соответствующей формуле:

4! 4!

C3 =

3!(4-3)! 3!1!

=4

Задача 5. Рассмотрим флаг России. Имеется три полосы белого, синего и красного цветов. Необходимо определить, сколько трёхцветных флагов (из трёх продольных полос) можно сшить из материала трёх цветов.

Ясно, что повторения цветов не допускается, иначе мы не получим трёхцветного флага. Кроме того, выборка упорядоченная, поскольку имеет значение порядок следования цветов на флаге. Поэтому имеем размещение без повторений из трёх цветов по трём полосам:

А3 = 3(3 -1)(3 - 2) = ■

3!

= 3!= 6 = P

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3

(3-3)!

Таким образом, это ещё и перестановки ( P3 ) на множестве трёх цветов.

З а д а ч а 6. Сколько существует вариантов расселения шести студентов в об-

щежитии в трёх двухместных комнатах?

В этом случае имеем перестановки с повторениями, поскольку вариант расселе-

ния - вектор из трёх элементов, а каждый элемент равен двум - количеству мест (комнаты двухместные):

Р

(2,2,2)

_6!_ _ 1-2 •3 •4 * • 5 •6 _ 90 2!-2!-2! 1-2-1-2-1-2

Таким образом, в статье представлены методики решения задач по темам: 1 Выполнение операций над множествами.

Образовательные ресурсы и технологии^2015’4(12)

51

ОБРАЗОВАТЕЛЬНАЯ СРЕДА

2 Решение теоретико-множественных задач с использованием законов алгебры Кантора.

3 Решение комбинаторных задач.

В следующей статье мы продолжим знакомство с методиками решения практических задач по «Дискретной математике и математической логике». Будут рассмотрены методики по следующим четырем темам:

1 Решение задач на графах.

2 Задание переключательных функций.

3 Определение свойств бинарных переключательных функций.

4 Решение задач на применение законов алгебры переключательных функций и формул равносильных преобразований.

Литература

1. Аляев Ю.А., Тюрин С.Ф. Дискретная математика и математическая логика. М.: Финансы и статистика, 2006. 368 с.

Practical discrete mathematics and mathematics of logic (practical occupations 1-3)

Sergey Feofentovich Tyurin, professor, professor of the pulpit of the automation and tele mechanical engineers

Telephone: 7-952-320-25-10, e-mail: [email protected]

Perm national research polytechnic university

http://pstu.ru

Yuri Alexandrovich Alyaev, assistant professor, assistant professor of the pulpit of software of the

computing machinery and automated systems

Telephone: 7-919-703-30-73, e-mail: [email protected]

Perm military institute of internal troops of the MIA of Russia

http://pvivv. ru

The technique of solving problems on a practical training on discipline «Discrete mathematics and mathematical logic» developed and applied in practice in the universities of the Perm region.

Keywords: the discrete mathematics, mathematics of logic, ensemble, algebra of the logic

52

Образовательные ресурсы и технологии^2015’4(12)

i Надоели баннеры? Вы всегда можете отключить рекламу.