// UVa 10620 - A flea on a chessboard #include <iostream> #include <string> #include <vector> #include <map> #include <cmath> #include <math.h> #include <sstream> #include <stdio.h> using namespace std; #define integer unsigned long long integer gcd(integer a, integer b) { if (b == 0) return a; else return gcd(b, a % b); } integer lcm(integer a, integer b) { return a * b / gcd(a, b); } int main() { integer s, x, y, dx, dy; while (cin >> s >> x >> y >> dx >> dy && (s != 0 || x != 0 || y != 0 || dx != 0 || dy != 0)) { // don't know why up to lcm is not enough integer aa = 2 * lcm(s / gcd(s, dx), s / gcd(s, dy)); integer sa; bool white = false; for (integer a = 0; a <= aa; a++) { integer xx = (x + a * dx); integer yy = (y + a * dy); if (xx % s && yy % s) { integer xxx = xx / s + 1; integer yyy = yy / s + 1; if ((xxx & 1) != (yyy & 1)) { white = true; sa = a; break; } } } if (white) printf("After %llu jumps the flea lands at (%.llu, %.llu).\n", sa, x + sa * dx, y + sa * dy); else printf("The flea cannot escape from black squares.\n"); } return 0; }
Wednesday, May 13, 2015
UVa 10620 - A flea on a chessboard
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment