// UVa 10432 - Polygon Inside A Circle // O(1) #include <math.h> #include <stdio.h> using namespace std; inline double poly_area_method1(double r, int n) { // using area = b*c*sin(alpha) and M_PI double angle = 2 * M_PI / n; double triangle_area = r * r * sin(angle) / 2; return triangle_area * n; } inline double poly_area_method2(double r, int n) { // using acos(-1) instead of M_PI double angle = 2 * acos(-1) / n; double triangle_area = r * r * sin(angle) / 2; return triangle_area * n; } inline double poly_area_method3(double r, int n) { // using area=b*h/2 and M_PI double angle = 2 * M_PI / n; double half_angle = angle / 2; double triangle_height = cos(half_angle) * r; double triangle_base = sin(half_angle) * r * 2; double triangle_area = triangle_height * triangle_base / 2; return triangle_area * n; } inline double poly_area_method4(double r, int n) { // using area=b*h/2 and acos(-1) double angle = 2 * acos(-1) / n; double half_angle = angle / 2; double triangle_height = cos(half_angle) * r; double triangle_base = sin(half_angle) * r * 2; double triangle_area = triangle_height * triangle_base / 2; return triangle_area * n; } int main() { int n; double r; while (scanf("%lf%d", &r, &n) != EOF) { printf("%.3f\n", poly_area_method1(r, n)); } return 0; }
Monday, May 4, 2015
UVa 10432 - Polygon Inside A Circle
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment