Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
#1

Раскраска таблицы умножения - C++

23.04.2014, 09:08. Просмотров 1049. Ответов 10
Метки нет (Все метки)

Раскраска таблицы умножения
(Время: 1 сек. Память: 16 Мб Сложность: 32%)
Кликните здесь для просмотра всего текста

Таблицей умножения назовем таблицу размера n строк на m столбцов, в которой на пересечении i-ой строки и j-ого столбца стоит число i∙j (строки и столбцы нумеруются с единицы).

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

Процесс покраски чисел можно условно разбить на четыре этапа. На первом этапе все числа красятся в черный цвет. На втором - все четные числа красятся в красный цвет, на третьем – все числа, делящиеся на 3, красятся в зеленый цвет, на четвертом - все числа, делящиеся на 5, красятся в синий цвет.

Директор школы хочет знать, какое количество картриджей для принтеров необходимо закупить для печати таблиц. Поэтому ему необходима информация о том, сколько чисел какого цвета будет в одной раскрашенной таблице умножения n на m. Напишите программу, решающую задачу подсчета соответствующих количеств.
Входные данные

Входной файл INPUT.TXT содержит два натуральных числа n и m (1 ≤ n,m ≤ 1000).
Выходные данные

В первой строке выходного файла OUTPUT.TXT выведите количество чисел, покрашенных в красный цвет, во второй - в зеленый, в третьей - в синий, в четвертой - в черный. Следуйте формату, приведенному в примерах.

Пример
10 10
RED : 21
GREEN : 39
BLUE : 36
BLACK : 4
5 2
RED : 5
GREEN : 2
BLUE : 2
BLACK : 1

вот мой код, валится на втором тесте где ошибка не могу понять.прошу помощи
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<iostream>
#include<fstream>
using namespace std;
int main(){
    ifstream cin("input.txt");
    ofstream cout("output.txt");
    int red = 0, blue = 0, green = 0, black = 0,n, m;
    cin >> n >> m;
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < m; ++j){
            if ((i*j % 2 == 0) && (i*j % 3!=0)&&(i*j % 5!=0))
                red++;
            else if ((i*j % 2 != 0) && (i*j % 3 == 0) && (i*j % 5 != 0))
                green++;
            else if ((i*j % 2 != 0) && (i*j % 3 != 0) && (i*j % 5 == 0))
                blue++;
            else if ((i*j % 2 == 0 && i*j % 3 == 0)&& (i*j % 5 != 0))//на 2 и на 3
                green++;
            else if ((i*j % 2 == 0 &&i*j % 5 == 0) && (i*j % 3 != 0))//на 2 и на 5
                blue++;
            else if ((i*j % 3 == 0 && i*j % 5 == 0)&&(i*j % 2 != 0)) //на 3 и на 5
                blue++;
            else 
                black++;
        }
    }
    //black = n*m - red - green - blue;
    cout << "RED" <<" "<<":"<< " " << red << endl;
    cout << "GREEN" << " " << ":" << " " << green << endl;
    cout << "BLUE" << " " << ":" << " " << blue << endl;
    cout << "BLACK" <<" "<<":"<< " " << black << endl;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 09:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Раскраска таблицы умножения (C++):

Выввод таблицы умножения - C++
Надо написать программу в с++,которая будет вывводить таблицу умножения С ПОМОЩЬЮ цикла.Ограничение:цикл должен быть в 5 строчек.

Вывод таблицы умножения - C++
Borland C++ Составить программу, которая распечатывает на экране таблицу умножения, по типу программы нахождения квадрата числа ...

Таблица умножения в виде таблицы - C++
Помогите изменить код что бы таблица печаталась в виде (снизу фото) а не просто в столбик один за одним #include &lt;iostream&gt; ...

Проверка знаний таблицы умножения - C++
Доброго времени суток! есть задача: Написать программу, которая проверяет пользователя на знание таблицы умножения. Программа выводит...

создание таблицы умножения, error - C++
Здравствуйте дорогие обитатели форума, собственно я здесь новенький и отношусь так сказать к разряду &quot;хеллоувёрлдщиков&quot;... ну это так, а...

Программа проверки знания таблицы умножения - C++
Добрый вечер. не могу понять, где напутала в коде. if не срабатывает, пробовала заполнить массив без указателей - выдает либо адрес...

10
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
23.04.2014, 09:28 #2
Цитата Сообщение от Live4Sky Посмотреть сообщение
На втором - все четные числа красятся в красный цвет, на третьем – все числа, делящиеся на 3, красятся в зеленый цвет, на четвертом - все числа, делящиеся на 5, красятся в синий цвет.
каким цветом красится число 30???

Добавлено через 7 минут
попробуй такой путь

C++
1
2
3
4
5
6
7
int black=i*j;
int red=(i*j)/2;
int green=(i*j)/3;
int blue=(i*j)/5;
green=green-blue;
red=red-green-blue;
black=black-red-green-blue;
Добавлено через 4 минуты
Цитата Сообщение от Live4Sky Посмотреть сообщение
5 2
RED : 5
GREEN : 2
BLUE : 2
BLACK : 1
что то не уверен
1 2 3 4 5
6 7 8 9 10
итого
RED : 3
GREEN : 3
BLUE : 2
BLACK : 2

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
попробуй такой путь
не совсем верно
нужно вычитать пересечение множеств
0
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
23.04.2014, 13:58  [ТС] #3
ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
что то не уверен
1 2 3 4 5
6 7 8 9 10
итого
RED : 3
GREEN : 3
BLUE : 2
BLACK : 2
этот пример шел вместе с задачей, так же как и первый,тобиш я их не из головы выкинул.у меня с множествами туговато...

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
каким цветом красится число 30???
интересный вопрос,по идее сначала черным,затем 30%2!=0 ,затем 30%3!=0,затем 30%5!=0
Итог - черныйвроде
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
23.04.2014, 16:25 #4
Цитата Сообщение от Live4Sky Посмотреть сообщение
30%2!=0 ,затем 30%3!=0,затем 30%5!=0
интересно
сначала черный
потом красный, кратно 2
потом зеленый, кратно 3
потом синий, кратно 5
вроде синий
Цитата Сообщение от Live4Sky Посмотреть сообщение
этот пример шел вместе с задачей, так же как и первый,тобиш я их не из головы выкинул.
ну и как решать?
я расцветил циферки
что то не так?
или числа кратные двум числам по другому расцвечивается?
черных то все равно два 1 и 7 не делится ни на 2 ни на 3 ни на 5
0
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
24.04.2014, 10:19  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
Сообщение от Live4Sky
30%2!=0 ,затем 30%3!=0,затем 30%5!=0
интересно
сначала черный
потом красный, кратно 2
потом зеленый, кратно 3
потом синий, кратно 5
вроде синий
Сообщение от Live4Sky
этот пример шел вместе с задачей, так же как и первый,тобиш я их не из головы выкинул.
ну и как решать?
я расцветил циферки
что то не так?
или числа кратные двум числам по другому расцвечивается?
черных то все равно два 1 и 7 не делится ни на 2 ни на 3 ни на 5
может вы просто не так посчитали? ибо таблица 5x2 это все таки не 12345678910,а
1 2 3 4 5
2 4 6 8 10
RED : 5
GREEN : 2
BLUE : 2
BLACK : 1
как то так

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
интересно
сначала черный
потом красный, кратно 2
потом зеленый, кратно 3
потом синий, кратно 5
вроде синий
насчет этого согласен 30 - синий
0
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
24.04.2014, 10:46 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как понимаю последний цвет, в который красят число и будет его цветом, поэтому пробуем красить с последнего цвета, если получилось - переходим к следующей итерации цикла, если не получилось покрасить не в один цвет, то красим в черный и переходим к следующему числу.

Вот попробуйте, первые 2 примера вроде правильно выводит:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<fstream>
using namespace std;
int main() {
    //ifstream cin("input.txt");
    //ofstream cout("output.txt");
    int red = 0, blue = 0, green = 0, black = 0, n, m, CurrentNum;
    cin >> n >> m;
    for (int i = 1; i <= n; ++i){
        for (int j = 1; j <= m; ++j) {
            CurrentNum=i*j;
 
            if ( !(CurrentNum%5) ) {
                blue++;
                continue;
            }
            if ( !(CurrentNum%3) ) {
                green++;
                continue;
            }
            if ( !(CurrentNum%2) ) {
                red++;
                continue;
            }
            black++;
        }
    }
 
    cout << "RED" <<" "<<":"<< " " << red << endl;
    cout << "GREEN" << " " << ":" << " " << green << endl;
    cout << "BLUE" << " " << ":" << " " << blue << endl;
    cout << "BLACK" <<" "<<":"<< " " << black << endl;
 
}
1
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
24.04.2014, 18:08 #7
Цитата Сообщение от Live4Sky Посмотреть сообщение
может вы просто не так посчитали? ибо таблица 5x2 это все таки не 12345678910,а
согласен тупанул
вот модифицированный код TrueBit,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
for (int i = 1; i <= n; ++i)
    {
      for (int j = 1; j <= m; ++j) 
        {
            CurrentNum=i*j;
 
            if ( CurrentNum%5==0) 
              {
                blue++;
               }
           else
             {
              if (CurrentNum%3==0)
             {
                green++;
             }
              else
              { 
                if (CurrentNum%2==0 ) 
              {
                   red++;
               else
                 black++;
             }
          } 
       }
    }

но по моему решать циклами такое глупо
нужно как то комбинаторику сюда приладить
пока не могу сказать как
0
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
25.04.2014, 05:35  [ТС] #8
ValeryS,бывает,ладно буду пробывать код TrueBitб и ваш заодно)заранее спасибо
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
25.04.2014, 08:07 #9
Цитата Сообщение от Live4Sky Посмотреть сообщение
ладно буду пробывать код
прежде чем пробовать код
создай несколько таблиц и раскрась их
и увидишь что один цвет это столбики и строки, надо сосчитать количество строк/стобцов и количество элементов в них
если выловить эту закономерность то можно обойтись без циклов
например 4 на 4 и найти кратное трем (i=4 j=4)
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16

количество столбцов i/3=1 количество элементов в столбцах i/3*j=4
количество строк j/3=1 количество элементов в строках j/3*i=4
количество пересечений i/3*j/3

потом сложить количество по строкам и столбцам и вычесть количество пересечений
4+4-1=7
1
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
29.04.2014, 17:31  [ТС] #10
Цитата Сообщение от TrueBit Посмотреть сообщение
Вот попробуйте, первые 2 примера вроде правильно выводит:
Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<fstream>
using namespace std;
int main() {
* * //ifstream cin("input.txt");
* * //ofstream cout("output.txt");
* * int red = 0, blue = 0, green = 0, black = 0, n, m, CurrentNum;
* * cin >> n >> m;
* * for (int i = 1; i <= n; ++i){
* * * * for (int j = 1; j <= m; ++j) {
* * * * * * CurrentNum=i*j;
if ( !(CurrentNum%5) ) {
* * * * * * * * blue++;
* * * * * * * * continue;
* * * * * * }
* * * * * * if ( !(CurrentNum%3) ) {
* * * * * * * * green++;
* * * * * * * * continue;
* * * * * * }
* * * * * * if ( !(CurrentNum%2) ) {
* * * * * * * * red++;
* * * * * * * * continue;
* * * * * * }
* * * * * * black++;
* * * * }
* * }
cout << "RED" <<" "<<":"<< " " << red << endl;
* * cout << "GREEN" << " " << ":" << " " << green << endl;
* * cout << "BLUE" << " " << ":" << " " << blue << endl;
* * cout << "BLACK" <<" "<<":"<< " " << black << endl;
}
Последний раз редактировалось TrueBit; 24.04.2014 в 15:48.
Accepted)наконец то

Добавлено через 1 минуту
Спасибо
0
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
29.04.2014, 22:54 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Live4Sky Посмотреть сообщение
у меня с множествами туговато.
Цитата Сообщение от ValeryS Посмотреть сообщение
но по моему решать циклами такое глупо
нужно как то комбинаторику сюда приладить
пока не могу сказать как
Если через комбинаторику, то задача связана с множествами и формулой включения-исключения. Вот что получилось:

теория:
Кликните здесь для просмотра всего текста
Выведем нужные формулы, а также рассмотрим их на примере таблицы 10*10:

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100


ВВЕДЕМ ОБОЗНАЧЕНИЯ:
n = общее число строк
m = общее число столбцов
r,g,b - конечные множества
r = c/2 = число_чисел_делящихся_на_2
g = c/3 = число_чисел_делящихся_на_3
b = c/5 = число_чисел_делящихся_на_5
rAg=r^g = c/(2 ^ 3) = число_чисел_делящихся_на_2_и_3
rAb=r^b = c/(2 ^ 5) = число_чисел_делящихся_на_2_и_5
gAb=g^b = c/(3 ^ 5) = число_чисел_делящихся_на_3_и_5
rVg = c/(2 V 3) = число_чисел_делящихся_на_2_или_3
rVb = c/(2 V 5) = число_чисел_делящихся_на_2_или_5
gVb = c/(3 V 5) = число_чисел_делящихся_на_3_или_5
r^g^b = c/(2 ^ 3 ^ 5) = чило_чисел_делящихся_на_3_и_5_и_7
r^g^b = c/(2 ^ 3 ^ 5) = чило_чисел_делящихся_на_3_или_5_или_7
строки\столбцы будем называть просто рядами

rVgVb = r + g + b - (r^g + r^b + g^b) + r^g^b - формуля включения-исключения для 3х множеств

рассмотрим формулы для случая n=10, m=10
формулы, приведенные ранее(набор формул 1)
r = c/2 = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/2)*n + (n/2)*m - (n/2)*(m/2) = 50+50-25 = 75
g = c/3 = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/3)*n + (n/3)*m - (n/3)*(m/3) = 30+30-9 = 51
b = c/5 = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/5)*n + (n/5)*m - (n/5)*(m/5) = 20+20-4 = 36

аналогичные, для объединений цветов(набор формул 2):
rVg = c/(2 V 3) = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/2 + m/3 - m/(2*3))*n + (n/2 + n/3 - n/(2*3))*m - (n/2 + n/3 - n/(2*3))*(m/2 + m/3 - m/(2*3)) = 91
rVb = c/(2 V 5) = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/2 + m/5 - m/(2*5))*n + (n/2 + n/5 - n/(2*5))*m - (n/2 + n/5 - n/(2*5))*(m/2 + m/5 - m/(2*5)) = 84
gVb = c/(3 V 5) = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/3 + m/5 - m/(3*5))*n + (n/3 + n/5 - n/(3*5))*m - (n/3 + n/5 - n/(3*5))*(m/3 + m/5 - m/(3*5)) = 75
rVgVb = c/(2 V 3 V 5) = число_нужных_столбцов*n + число_нужных_строк*m - пересечения_нужных_рядов = (m/2 + m/3 + m/5 - m/(2*3) - m/(2*5) - m/(3*5) + m/(2*3*5))*n + (n/2 + n/3 + n/5 - n/(2*3) - n/(2*5) - n/(3*5) + n/(2*3*5))*m - (n/2 + n/3 + n/5 - n/(2*3) - n/(2*5) - n/(3*5) + n/(2*3*5))*(m/2 + m/3 + m/5 - m/(2*3) - m/(2*5) - m/(3*5) + m/(2*3*5)) = 96

вспоминая математику, имеем, мощность объединения двух множеств есть сумма мощностей этих множеств за вычетом их объединения, aVb = a + b - a^b
отсюда a^b = a + b - aVb
применительно к нашим множествам(набор формул 3):
r^g = r + g - rVg = 75 + 51 - 91 = 35
r^b = r + b - rVb = 75 + 36 - 84 = 27
g^b = g + b - gVb = 51 + 36 - 75 = 12

из формулы включения-исключения
rVgVb = r + g + b - (r^g + r^b + g^b) + r^g^b
находим
r^g^b = rVgVb + (r^g + r^b + g^b) - (r + g + b) = 96 + (35 + 27 + 12) -(75 + 51 + 36) = 8

итак, нашли все что нам нужно

теперь находим цвета:

в синий красим последний поэтому, число синих чисел не зависит от покраски в другие цвета:
BLUE : b = 36
зеленый красим перед синим, поэтому из числа зеленых чисел вычитаем те которые красились в оба цвета зеленый+синий
GREEN : g - g^b = 51 - 27 = 39
красный красим перед зеленым и синим, поэтому из числа красных чисел вычитаем число чисел которые помимо красного красились в синий и зеленый(они перекрасили) и добавляем пересечение(если вычли 2 раза, тоесть число во все цвета красили)
RED : r - r^g - r^b + r^g^b = 75 - 35 - 27 + 8 = 21

чтобы найти число чисел окрашеных в черный цвет, найдем общее число чисел и вычтим число чисел которые окрашены хотябы в 1 цвет, тоесть вычтем мощность объединения множеств из общей мощности множества чисел таблицы т.е.

BLACK : n*m - rVgVb = 10*10 - 96

окончательно имеем:
RED : 21
GREEN : 39
BLUE : 36
BLACK : 4


решение на c++:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<fstream>
using namespace std;
 
int main() {
    //ifstream cin("input.txt");
    //ofstream cout("output.txt");
    int n=0,m=0;
    int r=0,g=0,b=0;
    int rAg=0,rAb=0,gAb=0;
    int rVg=0,rVb=0,gVb=0;
    int rAgAb=0,rVgVb=0;
 
    cin >> n >> m;
 
    r=(m/2)*n + (n/2)*m - (n/2)*(m/2);
    g=(m/3)*n + (n/3)*m - (n/3)*(m/3);
    b=(m/5)*n + (n/5)*m - (n/5)*(m/5);
 
    rVg=(m/2 + m/3 - m/(2*3))*n + (n/2 + n/3 - n/(2*3))*m - (n/2 + n/3 - n/(2*3))*(m/2 + m/3 - m/(2*3));
    rVb=(m/2 + m/5 - m/(2*5))*n + (n/2 + n/5 - n/(2*5))*m - (n/2 + n/5 - n/(2*5))*(m/2 + m/5 - m/(2*5));
    gVb=(m/3 + m/5 - m/(3*5))*n + (n/3 + n/5 - n/(3*5))*m - (n/3 + n/5 - n/(3*5))*(m/3 + m/5 - m/(3*5));
    rAg= r + g - rVg;
    rAb= r + b - rVb;
    gAb= g + b - gVb;
 
    rVgVb = (m/2 + m/3 + m/5 - m/(2*3) - m/(2*5) - m/(3*5) + m/(2*3*5))*n + (n/2 + n/3 + n/5 - n/(2*3) - n/(2*5) - n/(3*5) + n/(2*3*5))*m - (n/2 + n/3 + n/5 - n/(2*3) - n/(2*5) - n/(3*5) + n/(2*3*5))*(m/2 + m/3 + m/5 - m/(2*3) - m/(2*5) - m/(3*5) + m/(2*3*5));
    rAgAb = rVgVb + (rAg + rAb + gAb) - (r + g +b);
 
    cout << "RED" <<" "<<":"<< " " << r - rAg - rAb + rAgAb << endl;
    cout << "GREEN" << " " << ":" << " " << g - gAb << endl;
    cout << "BLUE" << " " << ":" << " " << b << endl;
    cout << "BLACK" <<" "<<":"<< " " << n*m - rVgVb << endl;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2014, 22:54
Привет! Вот еще темы с ответами:

Программа для изучения таблицы умножения - C++
Напишите программу, которая поможет выучить таблицу умножения. Суть программы в том, что она будет печатать на экране, например: ...

Заполнить двумерный масив результатами таблицы умножения - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void main() { int a; int i,j,s=0,n=0;

Написать программу для вывода таблицы умножения на экран - C++
Простите меня за мою наглость, но я вот вообще не знаю как писать программу до main. Помогите пожалуйста Написать программу для вывода...

Написать программу, которая проверяет пользователя на знание таблицы умножения - C++
Необходимо написать программу, которая проверяет пользователя на знание таблицы умножения. Пользователь сам вводит два целых однозначных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
29.04.2014, 22:54
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru