2861. Сумма нечетных чисел

 

Найдите сумму нечетных чисел на промежутке от а до b.

 

Вход. Два целых числа a и b, по модулю не превышающие 109.

 

Выход. Выведите сумму нечетных чисел на промежутке от а до b.

 

Пример входа

Пример выхода

2 5

8

 

 

РЕШЕНИЕ

вычисления

 

Анализ алгоритма

Если a четное, то увеличим его на 1. Если b четное, то уменьшим его на 1. От этого множество нечетных чисел на промежутке [a; b] не изменится. Для нахождения ответа воспользуемся формулой суммы арифметической прогрессии. На промежутке [a; b] (a и b нечетные) имеется в точности (ba) / 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)