x表示斜線面積、y點狀面積(4塊)、z剩下的(4塊)
由畢式定理:紅色三角形邊長比為1:√3:2
即是,算出紅色三角形面積 + 30度的扇形面積,
與半個正方形面積的差值,為半個z:
(a^2)/2 - [(1/2) * (a/2) * (√3a/2) + (30/360) * πa^2]
乘2後可得z:
a^2 - (√3a^2)/4 - (πa^2)/6
利用z來求y值,
y為正方形面積與90度扇形面積+2個z的差值:
a^2 - [(90/360) * πa^2 + 2z]
化簡後可得y:
a^2 - (πa^2)/4 - 2z
最後中間那塊x即為正方形面積與4塊(y+z)面積的差值:
a^2 - 4z - 4y
請無視我寫的E跟F(掩面),看來我少標一個點……
/* ACM 10209
* mythnc
* 2011/10/15 00:01:27
* run time: 0.040
*/
#include <stdio.h>
#include <math.h>
int main(void)
{
/* x: striped region, y: dotted region, z: the rest */
/* y and z have 4 pieces */
/* output x directly: a^2 - 4y - 4z */
double a, y, z;
double const pi = 3.1415926535897931159980;
while (scanf("%lf", &a) != EOF) {
a *= a; /* a mean a^2 now */
z = 4*a - 2*pi*a / 3 - a*sqrt(3); /* z mean 4z now */
y = 4*a - pi*a - 2*z; /* y mean 4y now */
printf("%.3f %.3f %.3f\n", a - y - z, y, z);
}
return 0;
}

沒有留言:
張貼留言