uva 10209 Is This Integration?

来源:互联网 发布:保利尼奥 知乎 编辑:程序博客网 时间:2024/05/17 07:39

题目大意:

一个正方形,以每个顶点为中心划圆,这样得到一个3中不同的阴影部分,求各个部分的面积。

算法分析:

这个题目纠结一个小时,开始以为列3个方程就好了,其实只能列出两个方程,你列出的第三个都能通过前两个解出。
先给出一幅图:
从这幅图中我们可以得到下面两个方程,一个是整体的正方形的面积,一个是扇形的面积。
x + 4 * y + 4 * z = a * a;
x + 3 * y + 2 * z = PI * a * a / 4;

但是这样解不出x,y,z。必须还要一个方程,下面我给出求出z的方法,书上说用鸽巢原理,但是没想明白,只有自己手动算了。



通过上图我们知道:绿色的等边三角形的面积(等边三角形的边长为:(2 * sqrt(3) / 3  -  1) * a),绿色三角形加上红色图形的面积的和 = 大的直角三角形的面积(sqrt(3)* a * a / 6)减去扇形的面积(1/12个圆),这样z的面积很贱就能计算出来了。有了z,在加上上面的两个公式,很容易解出x和y。1A。(注意图中圆弧是手画的,不要看错了,红色阴影不是三角形,有一个边是曲线,是圆的边,所以计算面积要计算扇形的面积。

最终公式:

z = a * a * (1.0 - PI / 6.0 - sqrt(3.0) / 4.0);y = a * a - PI * a * a / 4.0 - 2.0 * z;x = a * a - 4 * y - 4 * z;

代码:


#include <stdio.h>#include <math.h>#define  PI acos(-1.0)int main(){double a;while(scanf("%lf", &a) != EOF){double x,y,z;z = a * a * (1.0 - PI / 6.0 - sqrt(3.0) / 4.0);y = a * a - PI * a * a / 4.0 - 2.0 * z;x = a * a - 4 * y - 4 * z;printf("%.3lf %.3lf %.3lf\n", x, 4.0 * y, 4.0 * z);}return 0;}


原创粉丝点击