https://ac.nowcoder.com/acm/contest/3006/J
タイトル説明
牡牛座のチーム、トレーニングを持っているだけでなく、追いかけるだけではなく。
もう少し示し誰牛肉と牛は常に彼らは通常、他の人のは、その結果は......よりは、show誰よりも多くのコードに行く、と思ったことができます
今回は、彼らがより多くの誰も他のショーよりも歩き始めました。彼らはの半径に来て、その後、正規の内側の円を描く、円、多角形を。テイク場所を示すために、彼らは自分自身だけが多角形の端に移動させることができます。
それと同時に、彼らは容易に正規選択ポリゴンの頂点は、頂点番号1であり、その他の点の時計回りの順序は、頂点2、3と呼ばれる、......二つであった開始頂点、数及び頂点の頂点の数。
牛は行くことができますしながら、今、ポリゴンのエッジに沿って牛肉の側に、場所を取る示しています。彼は最短距離は、次の牛のエネルギーに歩いて行くどのくらいだろうか?
思考
それは規則的であるので、単純な幾何学的計算は、 多角形、内角と総合計、 四隅には、各コーナーである直角三角形に接続され、次いで(三行-1)は、その側面の任意の垂直方向の中心を通過し、簡単に知ること一角がある正多角形の斜辺側の長さが円相当の半径を判定することができるとともに、二つの位置のそれぞれの点 と 、 ポリゴン、トータル エッジは、 につながる 2種の必要とされて移動 し、 ストリップ、両側ノート精度を乗算し、最小値を求めています。
/*************************************************************************
> File Name: J.cpp
> Author: amoscykl
> Mail: [email protected]
> Created Time: 2020年02月13日 星期四 13时57分44秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
int n, r;
int main()
{
scanf("%d %d", &n, &r);
double x = 2.0 * r;
x *= cos(((n - 2 * 1.0) / (n * 2.0) * pi));
int i, j;
scanf("%d %d", &i, &j);
int mn = abs(i - j);
mn = min(mn, n - mn);
printf("%.7lf\n", mn * 1.0 * x);
return 0;
}