ちょっとした算数・数学の問題!
問題概要
考えたこと
A, B, C, D, E をそれぞれ 0, 1, 2, 3, 4 と対応させよう(0 始まりにするのがコツ)。このとき、対角線の長さは、対角線の両端に対応する数値の差で表すことができる。
たとえば、線分 BD の長さは、1 と 3 の差で「2」と表せる。線分の長さを表す数値は 1, 2, 3, 4 の 4 通りがありうるが、次のように整理できる。
- 長さ「1」と、長さ「4」は等しい
- 長さ「2」と、長さ「3」は等しい
これをもとに、次のように判定できる。
- 線分 の長さを表す数値を とする(実際の長さではない)
- 線分 の長さを表す数値を とする(実際の長さではない)
このとき、
- または のとき:"Yes"
- そうでないとき:"No"
コード
#include <bits/stdc++.h> using namespace std; int main() { char s1, s2, t1, t2; cin >> s1 >> s2 >> t1 >> t2; int ds = max(s1, s2) - min(s1, s2); int dt = max(t1, t2) - min(t1, t2); if (ds == dt || ds + dt == 5) cout << "Yes" << endl; else cout << "No" << endl; }