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

 

Вычислить сумму всех нечетных чисел из интервала [a, b]. Например, сумма нечетных чисел из интервала [3, 9] равна 3 + 5 + 7 + 9 = 24.

 

Вход. Первая строка содержит количество тестов T (1 £ T £ 100). Каждый тест состоит из двух чисел a  и b (0 £ a £ b £ 100), каждое из которых находится в отдельной строке.

 

Выход. Для каждого теста вывести его номер и сумму всех нечетных чисел из интервала [a, b].

 

Пример входа

2

1

5

3

5

 

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

Case 1: 9

Case 2: 8

 

 

РЕШЕНИЕ

математика

 

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

Пересчитаем значения a и b так, чтобы a равнялось наименьшему нечетному числу из интервала [a, b], а b – наибольшему. Если a > b, то сумма рана 0. Иначе сумму всех нечетных чисел из интервала [a, b] считаем по формуле суммы арифметической прогрессии. Поскольку значения a и b нечетные, то количество нечетных чисел в интервале [a, b] равно (ba) / 2 + 1, а сумма всех нечетных чисел равна

 

Пример

Путь a = 4, b = 10. После пересчета интервал [4, 10] превратится в [5, 9]. Количество нечетных чисел равно (9 – 5) / 2 + 1 = 3. Сумма всех нечетных чисел равна (5 + 9) / 2 * 3 = 21.

 

Реализация алгоритма

После прочтения входных данных пересчет границ интервала совершаем по правилу: если значение a четно, то увеличиваем его на 1; если b четно, то уменьшаем его на 1. Далее используем формулу суммы членов арифметической прогрессии.

 

  scanf("%d",&tests);

  for(i = 1; i <= tests; i++)

  {

    scanf("%d %d",&a,&b);

    if (a % 2 == 0) a++;

    if (b % 2 == 0) b--;

 

    if (b < a) res = 0;

    else res = (b + a) * ((b - a)/2 + 1) /2;

 

    printf("Case %d: %d\n",i,res);

  }