Задача взята с сайта e-olymp.com.
Условие
Школьники, идя из дому в школу или наоборот – со школы домой, любят кушать конфеты. Но, как всегда, это приятное дело иногда имеет неприятные последствия – детки часто выбрасывают обертки на школьном дворе.
Мурзик всегда следил за чистотой школьного двора и ему в этом с радостью помогали бабочки, благодарные за прекрасные фотографии, сделанные им. Бабочки могли использовать собственные крылышки как линзы, причем они могли изменять их фокусное расстояние. Заметив обертку от конфетки, лежавшую на школьном дворе в точке с координатами , , бабочка перелетала в точку с координатами , , , расположенную на пути солнечных лучей к обертке и, изменяя фокусное расстояние своих крылышек-линз, сжигали обертку от конфеты.
Какую оптическую силу имели крылышки-линзы бабочки в этот момент?
Входные данные:
В первой строке 2 числа: координаты , , обертки от конфетки. Во второй – 3 числа: координаты , , бабочки в момент сжигания обертки.
Все входные данные целые числа, не превышающие по модулю 1000.
Выходные данные:
Единственное число – оптическая сила крылышек-линз , вычисленная с точностью до 3-х знаков после запятой за правилами математических округлений.
Тесты:
10 | 20 | 10 | 20 | 100 | 0.010 |
10 | 30 | 10 | 30 | 50 | 0.020 |
10 | 30 | 20 | 40 | 110 | 0.009 |
Код на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner scan = new Scanner(System.in); int x1 = scan.nextInt(), y1 = scan.nextInt(); int x2 = scan.nextInt(), y2 = scan.nextInt(), z2 = scan.nextInt(); double D = 1/Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) + z2 * z2); System.out.print(D); } } |
Ход решения:
Вычисляем оптическую силу линзы D по формуле , где f – расстояние между бабочкой и обёрткой. вычисляем его по формуле: = . Вычисление в одну строку:
1 |
double D = 1/Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) + z2 * z2); |
Далее выводим на экран:
1 |
System.out.print(D); |
Ссылки:
Рабочий код для тестирования на Ideone.com: Ideone.com
Есть некоторые замечания по сути и оформлению:
— нужно указать категорию (рубрику) и ключевые слова,
— лучше отказаться от функции pow() для возведения во вторую степень (достаточно простого умножения).
Исправил