Знайдемо формулу для розв'язання задачі, спираючись на кількість слів у реченні.
Нехай є парним числом. Розглянемо речення Бариша та Азіза:
Обчислимо суму чисел у масиві "різниць". Розділимо числа в масиві на дві рівні частини. Знайдемо суму чисел від до n - 1 з кроком (це арифметична прогресія). У цьому діапазоні є чисел. Таким чином, сума всіх чисел у масиві "різниць" дорівнює:
Нехай є непарним числом. Розглянемо речення Бариша та Азіза:
Обчислимо суму чисел у масиві "різниць". Розділимо числа в масиві на дві рівні частини. Знайдемо суму чисел від до n - 1 з кроком (це арифметична прогресія). У цьому діапазоні є (n - 1) / 2 чисел. Таким чином, сума всіх чисел у масиві "різниць" дорівнює:
Приклад
Нехай n = 8.
Сума чисел у масиві "різниць" дорівнює 8^2 / 2 = 32.
Нехай n = 7.
Сума чисел у масиві "різниць" дорівнює (7^2 - 1) / 2 = 24.
Реалізація алгоритму
Зчитуємо кількість тестів .
scanf("%d", &tests);
while (tests--)
{Для кожного значення обчислюємо та виводимо результат.
scanf("%d", &n);
if (n % 2 == 0)
res = n * n / 2;
else
res = (n * n - 1) / 2;
printf("%lld\n", res);
}Реалізація на Python
Зчитуємо кількість тестів .
tests = int(input())
for _ in range(tests):Для кожного значення обчислюємо та виводимо результат.
n = int(input())
if n % 2 == 0:
res = n * n // 2
else:
res = (n * n - 1) // 2
print(res)