2861.
Сумма нечетных чисел
Найдите сумму
нечетных чисел на промежутке от а до b.
Вход. Два целых числа a
и b, по модулю не превышающие 109.
Выход. Выведите сумму нечетных чисел на промежутке от а до b.
Пример
входа |
Пример
выхода |
2 5 |
8 |
РЕШЕНИЕ
вычисления
Если a четное, то увеличим его на 1. Если b четное, то уменьшим его на 1. От этого
множество нечетных чисел на промежутке [a;
b] не изменится. Для нахождения
ответа воспользуемся формулой суммы арифметической прогрессии. На промежутке [a; b]
(a и b нечетные) имеется в точности (b
– a) / 2 + 1 нечетных чисел. Тогда
искомая сумма равна
Читаем входные данные.
scanf("%lld
%lld",&a,&b);
Подгоняем интервал [a;
b] так чтобы a и b стали нечетными.
if (a % 2 == 0) a++;
if (b % 2 == 0) b--;
Вычисляем и выводим ответ.
if (a > b) res = 0;
else res = (a + b) * ((b - a) / 2 + 1) / 2;
printf("%lld\n",res);
Java реализация
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
long a = con.nextLong();
long b = con.nextLong();
long res = 0;
if (a % 2 == 0) a++;
if (b % 2 == 0) b--;
if (a < b) res = (a + b) * ((b - a) / 2 + 1) / 2;
System.out.println(res);
con.close();
}
}
Python реализация
a, b = map(int,input().split())
if a % 2 == 0: a += 1
if b % 2 == 0: b -= 1
if a > b: res = 0;
else: res = (a + b) *
((b - a) // 2 + 1) // 2
print(res)