#include #include using namespace std; void Rotate(double x, double y, double &xx, double &yy, double t) { xx = x * cos(t) + y * sin(t); yy = - x * sin(t) + y * cos(t); } double Det(double m[2][2]) { return m[0][0] * m[1][1] - m[0][1] * m[1][0]; } double Det(double m[3][3]) { double m2[2][2]; double total = 0.0; m2[0][0] = m[1][1]; m2[0][1] = m[1][2]; m2[1][0] = m[2][1]; m2[1][1] = m[2][2]; total += m[0][0] * Det(m2); m2[0][0] = m[0][1]; m2[0][1] = m[0][2]; m2[1][0] = m[2][1]; m2[1][1] = m[2][2]; total -= m[1][0] * Det(m2); m2[0][0] = m[0][1]; m2[0][1] = m[0][2]; m2[1][0] = m[1][1]; m2[1][1] = m[1][2]; total += m[2][0] * Det(m2); return total; } void Center(double x[3], double y[3], double &cx, double &cy) { double m1[3][3]; m1[0][0] = x[0]*x[0] + y[0]*y[0]; m1[1][0] = y[0]; m1[2][0] = 1; m1[0][1] = x[1]*x[1] + y[1]*y[1]; m1[1][1] = y[1]; m1[2][1] = 1; m1[0][2] = x[2]*x[2] + y[2]*y[2]; m1[1][2] = y[2]; m1[2][2] = 1; double m2[3][3]; m2[0][0] = x[0]; m2[1][0] = x[0]*x[0] + y[0]*y[0]; m2[2][0] = 1; m2[0][1] = x[1]; m2[1][1] = x[1]*x[1] + y[1]*y[1]; m2[2][1] = 1; m2[0][2] = x[2]; m2[1][2] = x[2]*x[2] + y[2]*y[2]; m2[2][2] = 1; double m3[3][3]; m3[0][0] = x[0]; m3[0][1] = y[0]; m3[0][2] = 1.0; m3[1][0] = x[1]; m3[1][1] = y[1]; m3[1][2] = 1.0; m3[2][0] = x[2]; m3[2][1] = y[2]; m3[2][2] = 1.0; cx = Det(m1) / (2.0 * Det(m3)); cy = Det(m2) / (2.0 * Det(m3)); } int T, k1, k2; double ox[3], oy[3]; double rx[3], ry[3]; int main() { while (true) { cin >> T; cin >> k1; cin >> k2; if ((T == 0) && (k1 == 0) && (k2 == 0)) break; for (int i = 0; i < 3; ++i) { cin >> ox[i]; cin >> oy[i]; } Rotate(ox[0], oy[0], rx[0], ry[0], 0.0); Rotate(ox[1], oy[1], rx[1], ry[1], 2.0*M_PI/double(T) * double(k1)); Rotate(ox[2], oy[2], rx[2], ry[2], 2.0*M_PI/double(T) * double(k1 + k2)); double cx, cy; Center(rx, ry, cx, cy); double R = sqrt(cx*cx + cy*cy); double Ri = int(floor(R + 0.5)); cout << Ri << endl; } return 0; }