Каждому элементу массива из n целых чисел добавлен
его наименьший элемент. Полученные значения подаются на вход программы в том же
порядке. Необходимо восстановить исходные значения элементов массива.
Вход. Первая
строка содержит натуральное число n (n ≤ 100). Во второй строке записаны n целых чисел. Все
числа по модулю не превышают 100.
Выход. Выведите
в одной строке исходные значения элементов массива.
Пример входа |
Пример выхода |
7 1 7 -1 -4 2
1 2 |
3 9 1 -2 4 3
4 |
массив
Пусть x – наименьший
элемент исходного массива (который следует вывести). После того как к каждому
элементу массива будет добавлено значение x, наименьшим элементом
полученного массива станет число 2x.
Для
восстановления начальных значений ищем наименьший элемент min в исходном
массиве. Мы знаем, что min = 2x. Чтобы найти x, делим min на 2: add = min
/ 2. Значение add было добавлено ко всем элементам начального
массива. Следовательно, чтобы восстановить исходные значения, из каждого
элемента входного массива следует вычесть add.
В
приведенном примере наименьшим элементом будет min = -4.
Разделим его пополам: add = min / 2 = -2. Теперь вычитаем -2 из
каждого элемента входного массива.
Реализация алгоритма
Объявим
рабочий массив.
int m[101];
Читаем
входной массив. Находим в нем наименьший элемент min.
scanf("%d", &n);
min = 100;
for (i = 0; i < n; i++)
{
scanf("%d", &m[i]);
if (m[i] < min) min =
m[i];
}
Делим наименьший элемент пополам – это значение было
прибавлено ко всем элементам начального массива.
add = min /
2;
Из каждого элемента входного массива вычитаем найденное
значение add. Одновременно
выводим восстановленный (начальный) массив.
for (i = 0; i < n; i++)
{
m[i] -= add;
printf("%d ", m[i]);
}
printf("\n");
Python реализация
Читаем
входные данные.
n = int(input())
lst = list(map(int,input().split()))
Находим значение add, которое было прибавлено ко всем элементам начального списка.
add = min(lst) // 2
Вычитаем значение add из каждого элемента списка lst.
res = [x - add for x in
lst]
Выводим восстановленный (начальный)
массив.
print (*res)