您的位置:首页 > 其它

hlg1175小陈老师、桌子、盘子【计算几何】

2015-03-03 20:48 204 查看
大意:一个R的桌子能否摆下n个半径为r的盘子 要求所有的盘子靠桌子的边缘放置

分析:

两种思路

一种是看这个桌子放这种盘子最多放多少个

一种是把这种盘子n个放在这个桌子上最少需要多大桌子半径

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

const int maxn = 105;
const double PI = 3.14159265358979;

int eps(double x) {
if(fabs(x) < 1e-8) return 0;
if(x < 0) return -1;
return 1;
}

int main() {
int n;
double R, r;
while(EOF != scanf("%d %lf %lf",&n, &R, &r) ) {
if(eps(R - 2 * r) >= 0) {
double x = asin(r / ( R - r ) );
int y = ( int )(( PI + 1e-8) / x);
if(y >= n) puts("YES");
else puts("NO");
} else if(eps(R - r) >= 0){
if(n <= 1) puts("YES");
else puts("NO");
} else {
puts("NO");
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: