【POJ2242】The Circumference of the Circle(初等几何)
已知三点坐标,算圆面积。
使用初等几何知识,根据海伦公式s = sqrt(p(p - a)(p - b)(p - c)) 和 外接圆直径 d = a * b * c / (2s) 来直接计算。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <numeric> 6 #include <cctype> 7 #include <cmath> 8 #include <algorithm> 9 10 #define PI acos(-1) 11 using namespace std; 12 13 double calc_dis (double x1, double y1, double x2, double y2) { 14 return sqrt ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); 15 } 16 17 int main () { 18 ios :: sync_with_stdio(false); 19 double x[3], y[3]; 20 while (cin >> x[0] >> y[0]) { 21 for (int i = 1; i < 3; ++ i) { 22 cin >> x[i] >> y[i]; 23 } 24 double a, b, c; 25 a = calc_dis (x[0], y[0], x[1], y[1]); 26 b = calc_dis (x[0], y[0], x[2], y[2]); 27 c = calc_dis (x[2], y[2], x[1], y[1]); 28 //cout << a << " " << b << " " << c << endl; 29 double p = (a + b + c) / 2; 30 double s = sqrt (p * (p - a) * (p - b) * (p - c)); 31 //cout << "s : " << s << endl; 32 double d = a * b * c / (2 * s); 33 printf ("%.2f\n", PI * d); 34 } 35 return 0; 36 }