Mif 1

Постановка задачи

Даны действительные числа [latex]x, y[/latex]. Получить [latex]max(x,y)[/latex].

Входные данные:

Два действительных числа — [latex]x[/latex] и [latex]y[/latex].

Выходные данные:

Число, являющееся максимумом из двух чисел — [latex]maxOfTwo[/latex]

Тесты

Входные данные Выходные данные
1 3 4 4
2 -3 -5 -3
3 0 12 12

 

Решение:

Альтернативное решение:

 

Описание решения:

Объявляем три переменные типа  int  —  x, y, maxOfTwo . Вводим с клавиатуры значения для  x и  y . После чего с помощью условного оператора  if-else  проверяем  x>y . Если истинно, присваиваем переменной  maxOfTwo  значение переменной  x , а иначе  MaxOfTwo = y . Выводим значение  MaxOfTwo  с помощью функции  System.out.println() .

Описание альтернативного решения:

Объявляем три переменные типа  int  —  x, y, maxOfTwo . Вводим с клавиатуры значения для  x и  y . Используя тернарный оператор  ?: проверяем истинность выражения  x>y и присваиваем результат операции переменной  maxOfTwo . Выводим значение  MaxOfTwo  с помощью функции  System.out.println() .

 

 

 

 

e-olymp 108. Среднее число

Задача

Дано три различных числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. Вывести среднее из них.

Условие задачи на e-olymp.

Входные данные

Числа  [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] — целые и по модулю не превышают 1000.

Выходные данные

Единственное число — ответ на задачу.

Тесты

 №         a         b          c     Результат
  1         5         7          9              7
  2         7         5          9              7
  3         9         7          5              7
  4         7         9          5              7
  5         5         9          7              7
  6         9         5          7              7

Решение

Проверить работу кода можно в облаке по ссылке — Ideone.

Пояснения

В первом условии  if((a > b && b > c)||(c > b && b > a)) , мы проверяем оба условия при которых при выполнении любого из них средним числом будет второе число. В следующем условии  else if ((b > a && a > c)||(c > a && a > b )) , проделываем точно такую же операцию, только уже с первым числом. Если же два предыдущих условных оператора не выполняются, то результат будет таков, что средним числом будет являться третье число.

e-olymp 4. Two circles

Задача взята с сайта e-olymp.com.

Условие

Определить количество точек пересечения двух окружностей.

Входные данные:

Шесть чисел: x1, y1, r1, x2, y2, r2, где x1, y1, x2, y2 — координаты центров окружностей, а r1, r2 — их радиусы. Все числа — действительные, не превышают 109, заданы не более чем с тремя знаками после запятой.

Выходные данные:

Количество точек пересечения. Если точек пересечения бесконечно много, то вывести -1.

Тесты:

X1 Y1 R1 X2 Y2 R2 N
0 0 5 5 0 1 2
0 0 5 0 0 6 1
0 1 6 0 3 6 2

Код на Java:

Ход решения:

Высчитываем расстояние между центрами окружностей по формуле:Range = \sqrt{(X_2-X_1)^2+(Y_2-Y_1)^2}. Вычисление в одну строку:

Далее рассчитываем суму радиусов окружностей.
Если центры совпадают (Range = 0) и длины радиусов равны, значит, совпадают и окружности:

Если расстояние между окружностями равно сумме радиусов, окружности имеют одну общую точку, касаясь друг друга снаружи. Также одна из окружностей может лежать внутри другой и касаться ее изнутри:

Если расстояние между окружностями превышает сумму радиусов, это значит, что они не пересекаются. Также одна окружность может лежать внутри другой, но не касаться ее:

В остальных случаях окружности пересекаются и имеют две общие точки:

Ссылки:

Рабочий код для тестирования на Ideone.com: Ideone.com