- Megamozg 2190 б
- Matalya1 1800 б
- DevAdmin 1690 б
- arkasha_bortnikov 860 б
- Dwayne_Johnson 845 б
Ниже представлены два фрагмента таблиц из базы данных о жителях микрорайона. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. На основании приведённых данных определите наибольшую разницу между годами рождения родных братьев.При вычислении ответа учитывайте только информацию из приведённых фрагментов таблиц.
Примечание: Братьев (сестёр) считать родными, если у них есть хотя бы один общий родитель.
Таблица 1
ID фамилия_И.о.
37 Макаренко С.Д.
38 Макаренко О.Д.
41 Макаренко О.И.
42 Макаренко Д.С.
44 Келдыш А.Д.
48 Мазинг A.Е.
50 Шварц А.И.
55 Шварц И.И.
56 Шварц В.И.
58 Шварц 3.М.
59 Хитрово ф.Е.
62 Хитрово Е.Ф.
68 Хитрово С.Е.
Пол
M
Ж
Ж
M
Ж
Ж
M
M
M
Ж
M
M
M
Год рождения
2000
2005
1970
1969
1993
1982
1999
1973
2006
1949
1979
1956
1985
Таблица 2
ID_Родителя
41
42
41
42
58
41
42
62
55
58
55
62
62
ID Ребёнка
37
37
38
38
41
44
44
48
50
55
56
59
68
Родитель | Дети
-------- | ------
41 | 41, 42
55 | 55, 56, 58
59 | 59
62 | 62, 68
Затем нужно найти годы рождения всех родных братьев и сестер и определить наибольшую разницу между ними. Для этого можно использовать следующий алгоритм:
1. Для каждого родителя из таблицы 2:
1. Найти все дети этого родителя в таблице 2.
2. Для каждого ребенка:
1. Найти год рождения ребенка в таблице 1.
2. Для каждого другого ребенка этого родителя:
1. Найти год рождения другого ребенка в таблице 1.
2. Вычислить разницу между годами рождения двух детей.
3. Если эта разница больше, чем наибольшая найденная ранее, обновить значение наибольшей разницы.
Применяя этот алгоритм к таблице, получаем следующий результат:
Родитель | Дети | Наибольшая разница
-------- | ---------| ------------------
41 | 41, 42 | 2
55 | 55, 56, | 29
| 58 |
59 | 59 | 0
62 | 62, 68 | 6
Наибольшая разница между годами рождения родных братьев составляет 29 лет и принадлежит детям родителя с ID 55.