题目链接:点击打开链接
思路:
如图所示,将此问题转化为数学问题。我们求出 ∠BCD 即可,知道 BC = R - r , BD = r 利用 arcsin() 即可。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,R,r;
int main()
{
while(~scanf("%d%d%d",&n,&R,&r))
{
if(R<r)
{
puts("NO");
continue;
}
if(2*r>R) // 一个盘子就过圆心了,所以只能放一个
{
if(n==1)
puts("YES");
else
puts("NO");
continue;
}
double angle=asin(r*1.0/(R-r));
if(2*acos(-1.0)-angle*2*n>-1e-10) // 这里卡精度
puts("YES");
else
puts("NO");
}
return 0;
}