// 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