3743. Задача о среднем и медиане

 

Средним трех чисел a, b и c является число (a + b + c) / 3. Медианой трех чисел является среднее число, если их отсортировать в невозрастающем порядке.

По заданным двум числам a и b найти наименьшее возможное значение c такое, что среднее и медиана a, b и c одинаковы.

 

Вход. Каждый тест состоит из одной строки и содержит два целых числа a и b (1 ≤ ab ≤ 109). Последний тест содержит два нуля и не обрабатывается.

 

Выход. Для каждого теста вывести в отдельной строке такое наименьшее возможное целое c, что среднее и медиана a, b и c одинаковы.

 

Пример входа

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

1 2

6 10

1 1000000000

0 0

0

2

-999999998

 

 

РЕШЕНИЕ

математика

 

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

Поскольку ab, то c должно быть меньше a. Таким образом a будет медианой. Должно выполняться соотношение: (a + b + c) / 3 = a. Или a + b + c = 3a, c = 2ab.

 

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

Читаем входные данные и выводим результат.

 

while(scanf("%d %d",&a,&b), a + b > 0)

  printf("%d\n",2 * a - b);

 

Реализация через указатели

 

#include <stdio.h>

 

int *a, *b;

 

int main(void)

{

  a = new (int);

  b = new (int);

  while(scanf("%d %d",a,b), *a + *b > 0)

    printf("%d\n",2 * *a - *b);

  delete a;

  delete b;

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);   

    while(true)

    {

      int a = con.nextInt(), b = con.nextInt();

      if (a == 0 && b == 0) break;

      int res = 2 * a - b;

      System.out.println(res);     

    }

  }

}