CodeForces 1100C NN and the Optical Illusion 数学

http://codeforces.com/problemset/problem/1100/C

NN is an experienced internet user and that means he spends a lot of time on the social media. Once he found the following image on the Net, which asked him to compare the sizes of inner circles:

It turned out that the circles are equal. NN was very surprised by this fact, so he decided to create a similar picture himself.

He managed to calculate the number of outer circles nn and the radius of the inner circle rr. NN thinks that, using this information, you can exactly determine the radius of the outer circles RR so that the inner circle touches all of the outer ones externally and each pair of neighboring outer circles also touches each other. While NN tried very hard to guess the required radius, he didn't manage to do that.

Help NN find the required radius for building the required picture.

Input

The first and the only line of the input file contains two numbers nn and rr (3≤n≤1003≤n≤100, 1≤r≤1001≤r≤100) — the number of the outer circles and the radius of the inner circle respectively.

Output

Output a single number RR — the radius of the outer circle required for building the required picture.

Your answer will be accepted if its relative or absolute error does not exceed 10−610−6.

Formally, if your answer is aa and the jury's answer is bb. Your answer is accepted if and only when |a−b|max(1,|b|)≤10−6|a−b|max(1,|b|)≤10−6.

Examples

Input

3 1

Output

6.4641016

Input

6 1

Output

1.0000000

Input

100 100

Output

3.2429391

题目大意:给你一内圈圆的半径,和外圈圆的个数,求当外圈圆的半径等于多少的时候,这n个外圈圆的相邻两个可以紧密连接且均与内圈圆紧密连接。(这题一开始没看懂题,卡了好久……英语弱渣哭了)

思路:我们把n个外圈圆的圆心依次连起来,再与内圈圆的圆心连接起来,下面举一个n=3的例子:

不是很圆,凑合看吧。连完之后一共有n个三角形,我们任取一个就行了,这里我们看左上方那个ABC的三角形。很容易得到:AB=BC=R+r   AC=2*R    ∠ABC=2*pi/n (pi就是圆周率 角度制下是180°) 所以△ABC是一个等腰三角形,我们过B向AC做垂线:

在△BCD内,易得:sin(pi/n)=CD/BC  即sin(pi/n)=R/(R+r)  做简单变换即可得到:

R=r/(1/sin(pi/n)-1) 

这就是这道题的答案,注意精度就行了,pi我们可以通过反三角函数得到:const double pi=acos((double)-1)

(-1要转换成double型 不然在CF上有CE错误 因为acos有很多重载函数 函数并不知道你的-1是什么类型的)

#include<iostream>
#include<cstdio>
#include<stack>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>
#include<set>
#include<algorithm>
#include<iterator>
#define INF 0x3f3f3f3f
#define EPS 1e-10
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

const double PI=acos((double)-1);

int main()
{
	double n,r;
	scanf("%lf%lf",&n,&r);
	printf("%.10f\n",r/(1.0/sin(PI/n)-1));
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值