けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 240 A - Edge Checker (8Q, 灰色, 100 点)

上手に考えることで、実装が複雑になりすぎないようにしたい。

問題概要

次の図で  a 番と  b 番がつながっているかどうかを判定せよ。

制約

  •  1 \le a \lt b \le 10

考えたこと

 a \lt b という制約を考慮すると、Yes となる場合は、次の 10 通りの場合がある。

  •  (a, b) = (1, 2)
  •  (a, b) = (2, 3)
  •  (a, b) = (3, 4)
  •  (a, b) = (4, 5)
  •  (a, b) = (5, 6)
  •  (a, b) = (6, 7)
  •  (a, b) = (7, 8)
  •  (a, b) = (8, 9)
  •  (a, b) = (9, 10)
  •  (a, b) = (1, 10)

これらを順に判定していってもよい。......が、もう少し楽に判定できる。実は Yes となる場合は次のように書ける。

 b - a = 1 または  b - a = 9

これを利用すると簡単に実装できる。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    if (b - a == 1 || b - a == 9)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}