#include #include using namespace std; const double PI = 3.141592653589793238462643383279502884197169399; void rotateLeft (double &x, double &y, double ang){ double nx = cos(ang) * x - sin(ang) * y; double ny = sin(ang) * x + cos(ang) * y; x = nx; y = ny; } double det (double a, double b, double c, double d){ return a * d - b * c; } void computeCenter (double x1, double y1, double x2, double y2, double x3, double y3, double &x, double &y){ double mx1 = (x1+x2)/2, my1 = (y1+y2)/2; double mx2 = (x2+x3)/2, my2 = (y2+y3)/2; double nx1 = -(y2-y1), ny1 = (x2-x1); double nx2 = -(y3-y2), ny2 = (x3-x2); double a = nx1, b = -nx2, c = mx2 - mx1; double d = ny1, e = -ny2, f = my2 - my1; double t1 = det(c,b,f,e) / det(a,b,d,e); double t2 = det(a,c,d,f) / det(a,b,d,e); x1 = mx1 + nx1*t1; y1 = my1 + ny1*t1; x2 = mx2 + nx2*t2; y2 = my2 + ny2*t2; x = (x1+x2)/2; y = (y1+y2)/2; } int main (){ int T, k1, k2; double x1, y1, x2, y2, x3, y3, x, y, dist; while (true){ cin >> T >> k1 >> k2; if (T == 0 && k1 == 0 && k2 == 0) break; cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; // rotate moon positions so that planet P is in the same position // relative to start S rotateLeft (x1, y1, (2.0*PI*(k1+k2))/T); rotateLeft (x2, y2, (2.0*PI*k2)/T); // now, planet P is the point which is equidistant from all three // moon positions -- the circumcenter of the triangle formed by // the three points computeCenter (x1, y1, x2, y2, x3, y3, x, y); dist = sqrt(x*x+y*y); cout << (int)(dist + 0.5) << endl; } return 0; }