Problem Statement
At the beginning, Ciel can choose any of the seats. Then, at the end of each week Ciel will shift one row to the back and one column to the right, wrapping around whenever necessary. Formally, if her current seat is in row r and column c, then her seat next week will be the one in row ((r+1) modulo n) and column ((c+1) modulo m).
Fox Ciel now wonders whether she can sit in all the seats in the classroom if she follows the above procedure. As we already mentioned, she can start in any of the seats. Also, she can attend the school for as many weeks as she wants to. Return "Possible" if she can sit in all the seats and "Impossible" otherwise.
Definition
- Class:
- FoxAndClassroom
- Method:
- ableTo
- Parameters:
- int, int
- Returns:
- String
- Method signature:
- String ableTo(int n, int m)
- (be sure your method is public)
Constraints
- n will be between 2 and 10, inclusive.
- m will be between 2 and 10, inclusive.
Examples
2
3
Returns: "Possible"
We will use (r,c) to denote the chair at row r, column c. Suppose Ciel starts at (1,0). In the following weeks she will then sit at (0,1), (1,2), (0,0), (1,1), (0,2), (1,0) again, (0,1) again, and so on. We can see that already after 6 weeks Ciel sat in all the seats.
2
2
Returns: "Impossible"
Suppose that she starts at (0,0). Then the next week she will sit at (1,1) and the week after that she will be back at (0,0). She would never sit at (0,1) and (1,0). Similarly we can show that none of the other starting positions work.
4
6
Returns: "Impossible"
3
6
Returns: "Impossible"
5
7
Returns: "Possible"
10
10
Returns: "Impossible"
2
2
Returns: "Impossible"
2
3
Returns: "Possible"
2
4
Returns: "Impossible"
2
5
Returns: "Possible"
2
6
Returns: "Impossible"
2
7
Returns: "Possible"
2
8
Returns: "Impossible"
2
9
Returns: "Possible"
2
10
Returns: "Impossible"
3
2
Returns: "Possible"
3
3
Returns: "Impossible"
3
4
Returns: "Possible"
3
5
Returns: "Possible"
3
7
Returns: "Possible"
3
8
Returns: "Possible"
3
9
Returns: "Impossible"
3
10
Returns: "Possible"
4
2
Returns: "Impossible"
4
3
Returns: "Possible"
4
4
Returns: "Impossible"
4
5
Returns: "Possible"
4
6
Returns: "Impossible"
4
7
Returns: "Possible"
4
8
Returns: "Impossible"
4
9
Returns: "Possible"
4
10
Returns: "Impossible"
5
2
Returns: "Possible"
5
3
Returns: "Possible"
5
4
Returns: "Possible"
5
5
Returns: "Impossible"
5
6
Returns: "Possible"
5
7
Returns: "Possible"
5
8
Returns: "Possible"
5
9
Returns: "Possible"
5
10
Returns: "Impossible"
6
2
Returns: "Impossible"
6
3
Returns: "Impossible"
6
4
Returns: "Impossible"
6
5
Returns: "Possible"
6
6
Returns: "Impossible"
6
7
Returns: "Possible"
6
8
Returns: "Impossible"
6
9
Returns: "Impossible"
6
10
Returns: "Impossible"
7
2
Returns: "Possible"
7
3
Returns: "Possible"
7
4
Returns: "Possible"
7
5
Returns: "Possible"
7
6
Returns: "Possible"
7
7
Returns: "Impossible"
7
8
Returns: "Possible"
7
9
Returns: "Possible"
7
10
Returns: "Possible"
8
2
Returns: "Impossible"
8
3
Returns: "Possible"
8
4
Returns: "Impossible"
8
5
Returns: "Possible"
8
6
Returns: "Impossible"
8
7
Returns: "Possible"
8
8
Returns: "Impossible"
8
9
Returns: "Possible"
8
10
Returns: "Impossible"
9
2
Returns: "Possible"
9
3
Returns: "Impossible"
9
4
Returns: "Possible"
9
5
Returns: "Possible"
9
6
Returns: "Impossible"
9
7
Returns: "Possible"
9
8
Returns: "Possible"
9
9
Returns: "Impossible"
9
10
Returns: "Possible"
10
2
Returns: "Impossible"
10
3
Returns: "Possible"
10
4
Returns: "Impossible"
10
5
Returns: "Impossible"
10
6
Returns: "Impossible"
10
7
Returns: "Possible"
10
8
Returns: "Impossible"
10
9
Returns: "Possible"
10
10
Returns: "Impossible"