【AtCoder】ABC285解説(Python)

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")
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次