https://yukicoder.me/problems/no/643
解法
https://yukicoder.me/submissions/233985
以下の解法は証明無しで雰囲気で通している。
操作1では数自体は変わらないので、操作2で同じ数になる場合を考えてみる。
X' = Y'
X + Y = X - Y
2Y = 0
Y = 0
より、Y=0となれば操作2で同じ数と出来る。
次はY=0となる場合を考えてみるが、
X' = X + Y
Y' = X - Y
なので、Y'=0の場合はX=Yを満たしていて意味が無いので、X+Y=0より、X=-Yのときに0が作れる。
この辺から考えると、
- X=Yなら0
- Y=0なら1(操作2)
- X=0なら2(操作1→操作2)
- X=-Yなら3(操作2→操作1→操作2)
- それ以外なら作れない
それ以外が作れないのが証明できないが、例を作っていくら考えても出てこないので、サブミット証明すると通る。
int X, Y; //--------------------------------------------------------------------------------------------------- int solve() { if (X == Y) return 0; if (Y == 0) return 1; if (X == 0) return 2; if (X == -Y) return 3; return -1; } //--------------------------------------------------------------------------------------------------- void _main() { cin >> X >> Y; cout << solve() << endl; }