М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ольга1525
ольга1525
17.06.2021 09:36 •  Информатика

Два ближайших числа

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

Входные данные:

В первой строке дано натуральное число N≤100 — размер массива. В следующей строчке даны N целых чисел, не превосходящих по модулю 231

Выходные данные:

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

Примеры:

Ввод:

6

7 0 4 2 5 9

Вывод:

2 4

👇
Ответ:
Sudzuky
Sudzuky
17.06.2021
Добрый день! Давайте разберем эту задачу по шагам.

1. В начале нам необходимо прочитать данные входного массива. Первая строка содержит количество элементов в массиве, а во второй строке задан сам массив чисел. Для этого воспользуемся функцией `input()`, которая будет считывать строки с входными данными, и функцией `split()`, которая разделит строку на подстроки по пробелам и превратит их в список чисел. В нашем случае, нам нужно преобразовать строки с числами в список целых чисел. Вот код:

```python
n = int(input()) # считываем количество элементов в массиве
array = list(map(int, input().split())) # считываем массив чисел
```

2. Теперь у нас есть массив чисел, и мы хотим найти два ближайших элемента. Для этого создадим переменные `min_diff` и `min_indices` и инициализируем их так, чтобы они хранили пока еще несуществующее значение разности и индексы:

```python
min_diff = float('inf') # задаем наимаксимальную разность изначально
min_indices = (-1, -1) # задаем несуществующие индексы изначально
```

3. Теперь, чтобы найти два ближайших числа в массиве, пройдем циклом по всем парам элементов, вычислим разность между ними и обновим значения `min_diff` и `min_indices`, если текущая пара имеет меньшую разность:

```python
for i in range(n - 1): # проходим по всем парам элементов до предпоследнего
for j in range(i + 1, n): # для каждого i проходим по всем элементам справа от i
diff = abs(array[i] - array[j]) # вычисляем разность между элементами по модулю
if diff < min_diff: # если разность меньше текущего минимума
min_diff = diff # обновляем минимальную разность
min_indices = (i, j) # обновляем индексы пары элементов с минимальной разностью
```

4. Наконец, нужно вывести результат. Для этого просто выведем значения индексов, разделив их пробелом:

```python
print(min_indices[0], min_indices[1])
```

5. Полный код программы будет выглядеть так:

```python
n = int(input()) # считываем количество элементов в массиве
array = list(map(int, input().split())) # считываем массив чисел

min_diff = float('inf') # задаем наимаксимальную разность изначально
min_indices = (-1, -1) # задаем несуществующие индексы изначально

for i in range(n - 1): # проходим по всем парам элементов до предпоследнего
for j in range(i + 1, n): # для каждого i проходим по всем элементам справа от i
diff = abs(array[i] - array[j]) # вычисляем разность между элементами по модулю
if diff < min_diff: # если разность меньше текущего минимума
min_diff = diff # обновляем минимальную разность
min_indices = (i, j) # обновляем индексы пары элементов с минимальной разностью

print(min_indices[0], min_indices[1]) # выводим индексы пары элементов с минимальной разностью
```

Таким образом, при вводе примера из условия задачи:

```
6
7 0 4 2 5 9
```

Программа выведет:

```
2 4
```

И это будут индексы элементов `4` и `5` списка `7 0 4 2 5 9` с минимальной абсолютной разностью 1.
4,7(25 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ