e-olymp 1501. Конусное расстояние

Задача

Конус расположен в трехмерном пространстве так, что его основание радиуса [latex] r [/latex] лежит в плоскости [latex] z = 0 [/latex] с центром в [latex] (0,0,0) [/latex]. Вершина конуса расположена в [latex] (0, 0, h) [/latex]. На его поверхности заданы две точки в конусных координатах. Конусной координатой точки называется пара чисел [latex] (d, A) [/latex], где [latex] d [/latex] — расстояние от вершины конуса до точки [latex] p [/latex], а [latex] A (A < 360) [/latex] — угол в градусах между плоскостью [latex] y = 0 [/latex] и плоскостью, проходящей через точки [latex] (0,0,0), (0,0,h) [/latex] и [latex] p [/latex], считая против часовой стрелки от направления оси [latex] x [/latex].

На поверхности конуса заданы две точки [latex] p1 = (d1, A1) [/latex] и [latex] p2 = (d2, A2) [/latex]. Найти кратчайшее расстояние между [latex] p1 [/latex] и [latex] p2 [/latex], измеряемое по поверхности конуса.

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

Каждая строка является отдельным тестом и содержит 6 действительных чисел: [latex] r, h, d1, A1, d2 [/latex] и [latex] A2 [/latex].

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

Для каждого теста в отдельной строке вывести кратчайшее расстояние между точками [latex] p1 [/latex] и [latex] p2 [/latex] по поверхности конуса. Расстояние выводить с 2 десятичными знаками.

Тесты

Ввод Вывод
 1

 3.0 4.0 2.0 0.0 4.0 0.0

 2.00

 2

 3.0 4.0 2.0 90.0 4.0 0.0

 3.26
 3

 6.0 8.0 2.14 75.2 9.58 114.3

 7.66
 4

 3.0 4.0 5.0 0.0 5.0 90.0

 4.54

Код программы

Решение задачи

Инициализирую все нужные переменные и через поток ввода считываю все исходные данные. Затем нахожу образующую l по теореме Пифагора и угол между плоскостями — alpha . k1 это часть, которую занимает угол alpha от основания конуса. k2 — коэффициент пропорциональности между окружностями радиусами r и l . fi — величина угла развертки конуса, а beta — угол между прямыми на которых лежат точки, данные в условии. Далее находим искомое расстояние по теореме косинусов.

Ссылки

Related Images:

e-olymp 8521. Условный оператор — 2

Задача

Вычислите значение y в соответствии со следующим условием:

[latex]y=\begin{cases}x^{3} + 5x, x\geq 10\\\ x^{2} — 2x + 4 , x < 10\end{cases}[/latex]

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

Одно целое число  [latex] x(-10000 ≤ x ≤ 10000)[/latex].

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

Выведите значение y в соответствии с заданным условием.

Тесты

Ввод Вывод
1 2 4
2 20 8100
3 100 1000500
3 -5 39

Программы с ветвлением

Решение

Используем тернарный оператор для проверки [latex]x\geq 10[/latex].

Ссылки

Линейные вычисления

Решение

Используем логический оператор &&  так как он не вычисляет второе условие, если первое ложно.

Ссылки

Related Images: