任意兩點加上圓心會構成一個三角形,
共有n個三角形。
求出三角形的面積再乘以n即為答案。
已知三角形為等腰三角形,從底邊中間切一半,
可以得到兩塊一模一樣的直角三角形。
斜邊為R,對邊跟鄰邊都不知道。
斜邊與鄰邊的夾角a為360 / (n * 2)。
利用三角函數,可知對邊與鄰邊為sin(a) * R和cos(a) * R。
如此可求出此三角形面積:(1 / 2) * sin(a) * R * cos(a) * R。
一個等腰三角形由兩個直角三角形構成,n邊形由n個等腰三角形構成,
所以n邊形面積為n * 2 * (1 / 2) * sin(a) * R * cos(a) * R,
化簡後可得:n * sin(a) * R * cos(a) * R。
利用math.h的函式sin與cos即可求解。
但要先把度換成弧度(徑度)。
pi = 180度,
所以徑度 = pi / 180。
(pi / 180) * [360 / (n * 2)],
化簡後為pi / n。
r可能為浮點數,要用double吃。
/* ACM 10432 Polygon Inside A Circle * mythnc * 2011/12/23 14:04:53 * run time: 0.008 */ #include <stdio.h> #include <math.h> #define PI 3.141592653589793 int main(void) { int n; double r; while (scanf("%lf %d", &r, &n) == 2) printf("%.3f\n", n * r * sin(PI / n) * r * cos(PI / n)); return 0; }
沒有留言:
張貼留言