H. Киндер-сюрприз

Имя входного файла: surprise.in
Имя выходного файла: surprise.out
Ограничение по времени: 2 s
Ограничение по памяти: 256 megabytes

Говард собирает игрушки из киндер-сюрпризов. В последнее время пластиковые контейнеры в киндер-сюрпризах делают из двух половин таким образом, что можно верхнюю половину одного контейнера соединить с нижней половиной второго. Аналогично можно верхнюю половину второго соединить с нижней половиной третьего и так далее.

Говард соединяет n контейнеров указанным выше образом. При этом последний контейнер он соединяет с первым и получает таким образом кольцо. При взгляде сверху каждый контейнер представляет собой окружность радиуса r, каждые два соседних контейнера касаются друг друга. При этом центры контейнеров-окружностей сами расположены на одной окружности радиуса R.

Говарду интересно, какой радиус кольца R получится, если он соединит n контейнеров радиуса r. Помогите ему в этом.

Формат входного файла

В первой строке входного файла находится два числа – целое число n (3 ≤ n ≤ 106) и вещественное число r (0.01 ≤ r ≤ 100). Число r задано не более чем с двумя знаками после десятичной точки.

Формат выходного файла

Выведите единственное число R – искомый радиус кольца, которое получится у Говарда. Выводите число с шестью знаками после десятичной точки. Ваш ответ будет признан правильным, если его абсолютная или относительная погрешность будет не более 10-4.

Пример:

surprise.insurprise.out
10 1 3.2360679775
3 1.57 1.8128798453
Примечание. Для вывода числа с шестью знаками после десятичной точки, используйте следующие конструкции (предполагается, что выводится переменная x).
Pascal:
write(x:0:6);

C:
printf("%.6lf", (double)x);

C++:
cout.setf(ios::fixed | ios::showpoint);
cout.precision(6);
cout << x;


Источник: Первенство первокурсника ПетрГУ. Май 2012

Обсудить       Отправить решение