AtCoder Beginner Contest 285の解説記事です。
目次
ABC285 A – Edge Checker 2
問題
問題文の要約は以下の通りです。
問題の要約
以下の図において、 \(a\) 番の点と \(b\) 番の点が線で直接結ばれているかを判定せよ。
制約
・\(1 \le a < b \le 15\)
・\(a\), \(b\) は全て整数
入力
\(a\) \(b\)
出力
\(a\) 番の点と \(b\) 番の点が線で直接結ばれていれば Yes
、そうでないならば No
を出力せよ。
解法1
結ばれている線をすべて列挙して判定する。
解説
\(a\), \(b\) をint
型で受け取ります。
# 入力
a,b=map(int,input().split())
線で直接結ばれている組をすべて列挙します。
# 線で直接結ばれている組
line=[(1,2),(1,3),\
(2,4),(2,5),(3,6),(3,7),\
(4,8),(4,9),(5,10),(5,11),(6,12),(6,13),(7,14),(7,15)]
線で直接結ばれている組であればYes
、そうでないならば No
を出力します。
# 出力
if (a,b) in line:
print("Yes")
else:
print("No")
解答
# 入力
a,b=map(int,input().split())
# 線で直接結ばれている組
line=[(1,2),(1,3),\
(2,4),(2,5),(3,6),(3,7),\
(4,8),(4,9),(5,10),(5,11),(6,12),(6,13),(7,14),(7,15)]
# 出力
if (a,b) in line:
print("Yes")
else:
print("No")
解法2
結ばれている線を列挙せずに判定する。
解説
\(a\), \(b\) をint
型で受け取ります。
# 入力
a,b=map(int,input().split())
線で結ばれているのはb==2*a
またはb==2*a+1
のときなので、If
文で判定します。
線で直接結ばれている組であればYes
、そうでないならば No
を出力します。
# 出力
if b==2*a or b==2*a+1:
print("Yes")
else:
print("No")
解答
# 入力
a,b=map(int,input().split())
# 出力
if b==2*a or b==2*a+1:
print("Yes")
else:
print("No")