• Предмет: Информатика
  • Автор: arseniiynesterov
  • Вопрос задан 2 года назад

Маша любит четные числа, а Миша нечетные. Поэтому они всегда радуются, когда встречают числа, которые им нравятся.
Сегодня им встретились все числа от A до B включительно. Маша решила посчитать сумму всех четных чисел от A дo B, а Миша сумму всех нечетных, после чего они начали спорить у кого получилась сумма больше. Помогите им - найдите разность между суммой Маши и суммой Миши.
Программа получает на вход два целых положительных числа A и B, не превосходящие 2×10^9. Программа должна вывести одно число - разность между суммой четных чисел и суммой нечетных чисел от A до B.
Комментарии (0)

Ответы

Ответ дал: LRSM
16

PascalABC.NET 3.7:

  • ##
  • var sumOfAP := function(a1, an, d: real):real → (a1 + an)/2*((an - a1)/d+1);
  • var (a, b) := ReadInteger2('Введите a и b:');
  • var sE := sumOfAP(a + a mod 2, b - b mod 2, 2);
  • var sO := sumOfAP(a + 1 - a mod 2, b - 1 + b mod 2, 2);
  • Print('Результат:', sE - sO)

Пояснение:

Используется формула для нахождения суммы первых n членов арифметической прогрессии:  S = \frac{a_1 + a_n}{2} * (\frac{a_n - a_1}{d} + 1) , где a_1 — первый член прогрессии, a_n — последний член, d —разность прогрессии.

  • sumOfAP -- функция расчёта суммы арифметической прогрессии.
  • (a, b) -- вводимые числа.
  • ReadInteger2(prompt) -- выводит приглашение к вводу prompt и возвращает кортеж из двух значений типа integer, введенных с клавиатуры.
  • sE и sO -- "sum of Even" и "sum of Odd", сумма чётных и сумма нечётных соответственно.
  • Print -- выводит значения на экран, после каждого значения выводит пробел.
Приложения:
Вас заинтересует