Нехай — найменший елемент початкового масиву (який слід вивести). Після того як до кожного елемента масиву буде додано значення , найменшим елементом отриманого масиву стане число .
Для відновлення початкових значень шукаємо найменший елемент у початковому масиві. Ми знаємо, що min = 2x. Щоб знайти , ділимо на : add = min / 2. Значення було додано до всіх елементів початкового масиву. Відповідно, щоб відновити початкові значення, з кожного елемента вхідного масиву слід відняти .
Приклад
У наведеному прикладі найменшим елементом буде min = -4. Розділимо його навпіл: add = min / 2 = -2. Тепер віднімаємо з кожного елемента вхідного масиву.
Реалізація алгоритму
Оголосимо робочий масив.
int m[101];Читаємо вхідний масив. Знаходимо в ньому найменший елемент .
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;З кожного елемента вхідного масиву віднімаємо знайдене значення . Одночасно виводимо відновлений (початковий) масив.
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 = min(lst) // 2Віднімаємо значення з кожного елемента списку .
res = [x - add for x in lst]Виводимо відновлений (початковий) масив.
print (*res)