博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TOJ 4701 求阴影部分面积
阅读量:6209 次
发布时间:2019-06-21

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

4701: 求阴影部分面积 分享至QQ空间

本文版权归BobHuang和博客园共有,不得转载。如想转载,请联系作者,并注明出处。

Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
Total Submit: 63            Accepted:40

Description

 

设正方形ABCD边长为a,分别以B和D为圆心,绘制半径为a的1/4圆,与正方形的内切圆相交与M、N、O、P点,求这些交点围成的阴影部分面积。

 

Input

 

输入数据有多组,每组输入一个正整数a(a<=20),表示正方形的边长,输入以EOF结束。

 

Output

 

每组输出一个小数,表示阴影部分的面积,保留为2位小数

 

Sample Input

 2

Sample Output

 1.97

Hint

 圆周率PI取acos(-1.0)

Source

这个几何挺经典的,其实主要是利用了一个特殊的三角形。圆心角是圆周角的二倍

以前我在我博客里写过答案,现在一时间还真的竟然是推不出来的

 

 

 

写一下推演过程

红色三角形的三边是已知的,分别是1,√2,2

然后根据余弦定理求出∠1,∠2是∠1的两倍

有一个要求的扇形显而易见,其角度也能很快得到

本文版权归BobHuang和博客园共有,不得转载。如想转载,请联系作者,并注明出处。

减去两个三角形就是一半面积的一部分

一半的阴影剩下的一部分如上图所示

两个扇形找到了,三角形也可以求出来,直接手算出cosa啥的

很简单

求三角形面积 

double a=1.0,b=2.0,c=sqrt(2.0),s,area; 
s=(a+b+c)/2; 
area=sqrt(s*(s-a)*(s-b)*(s-c)); 
printf(“area=%.12f”,area); 
求一份的面积 
{double PI=acos(-1.0); 
double a1=acos(1.25/sqrt(2.0)); 
double a2=acos(-0.5/sqrt(2.0))-PI/2.0; 
double s=a1*2+a2/2-0.661437827766; 
printf(“%.12f”,s); 
}

因为a只有20,所以这样做的精度就没有问题,否则等比列变幻上去就好了

ac代码

#include 
int main(){ int a; while(~scanf("%d",&a)){ a*=1.0; printf("%.2f\n",0.492635644*a*a);} return 0;}

 

 

转载于:https://www.cnblogs.com/BobHuang/p/7402543.html

你可能感兴趣的文章
任意两个时间之间的星期几的次数-横.sql
查看>>
Fail2ban
查看>>
POJ-1062 昂贵的聘礼 dfs
查看>>
python 获取当前方法名
查看>>
Knockout.Js官网学习(Mapping插件)
查看>>
freemarker 超出字符用省略号表示
查看>>
在Ubuntu下构建Bullet以及执行Bullet的样例程序
查看>>
【C#】与C及OC的不同点
查看>>
iOS开发--Bison详解连连支付集成简书
查看>>
开发版本控制git
查看>>
项目管理学习笔记之五.沟通协调能力I
查看>>
NSString的常用方法
查看>>
how to read from __consumer_offsets topic
查看>>
Android 一个页面上下两个ListView的页面显示
查看>>
jQuery AutoComplete在AJAX UpdatePanel环境中PostBack之后无法工作
查看>>
【SSH网上商城项目实战06】基于DataGrid的数据显示
查看>>
机器学习——决策树
查看>>
PS 如何使用抽出滤镜抠人物的头发丝等细节
查看>>
Android微信支付SDK开发
查看>>
跑道标识和那些复杂的灯光系统 and 简介、编号、参数、标志及数量 and 飞机跑道标准与参数...
查看>>