博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hlg1175小陈老师、桌子、盘子【计算几何】
阅读量:4585 次
发布时间:2019-06-09

本文共 1872 字,大约阅读时间需要 6 分钟。

大意:一个R的桌子能否摆下n个半径为r的盘子  要求所有的盘子靠桌子的边缘放置

分析:

两种思路 

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

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

代码:

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 105; 8 const double PI = 3.14159265358979; 9 10 int eps(double x) {11 if(fabs(x) < 1e-8) return 0;12 if(x < 0) return -1;13 return 1;14 }15 16 int main() {17 int n;18 double R, r;19 while(EOF != scanf("%d %lf %lf",&n, &R, &r) ) {20 if(n == 1) { 21 if(eps(R - r) >= 0) puts("YES");22 else puts("NO");23 } else if(n == 2) {24 if(eps(R - 2 * r) >= 0) puts("YES");25 else puts("NO");26 } else {27 double x = PI / n;28 double y = r / sin(x) + r;29 if(eps(R - y) >= 0) puts("YES");30 else puts("NO");31 }32 }33 return 0;34 }
View Code
1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 105; 8 const double PI = 3.14159265358979; 9 10 int eps(double x) {11 if(fabs(x) < 1e-8) return 0;12 if(x < 0) return -1;13 return 1;14 }15 16 int main() {17 int n;18 double R, r;19 while(EOF != scanf("%d %lf %lf",&n, &R, &r) ) {20 if(eps(R - 2 * r) >= 0) {21 double x = asin(r / ( R - r ) );22 int y = ( int )(( PI + 1e-8) / x);23 if(y >= n) puts("YES");24 else puts("NO");25 } else if(eps(R - r) >= 0){26 if(n <= 1) puts("YES"); 27 else puts("NO");28 } else {29 puts("NO");30 }31 }32 return 0;33 }
View Code

 

转载于:https://www.cnblogs.com/zhanzhao/p/4311893.html

你可能感兴趣的文章
解决IE11只能用管理员身份运行的问题
查看>>
android学习-LocationManager(一)-
查看>>
Linux安装单机solr
查看>>
dos alias/cname address
查看>>
cygwin下用arm-xscale-linux-gnueabi交叉编译libcgi
查看>>
从开始学编程过了半年了……
查看>>
【05月22日】预分红股息率最高排名
查看>>
Android学习总结(二)——Service基本概念和生命周期
查看>>
chr()//ord() //进制转换函数//eval()//文件函数//split()
查看>>
第一章 Java程序设计概述
查看>>
定时调动 (项目保留备份代码码)
查看>>
Leetcode-Divide Two Integers
查看>>
HTML 首页倒三角形导航块
查看>>
每天一道Java题[9]
查看>>
结对编程2——单元测试
查看>>
python 函数/列表的应用
查看>>
C#与MES
查看>>
LR接口测试---Java Vuser之jdbc查询(调试前)
查看>>
SQL Server 各版本安装包分享
查看>>
.net项目移植后的虚拟目录的配置问题
查看>>