【AtCoder】ABC157解説(Python)

AtCoder Beginner Contest 157の解説記事です。

目次

ABC157 A – Duplex Printing

問題

問題文の要約は以下の通りです。

問題の要約

全 \(N\) ページから成る書類を1枚の紙に2ページ分印刷するとき、最小で何枚の紙が必要か求めよ。

制約

・\(N\) は整数
・\(1 \le N \le 100\)

入力

\(N\)

出力

答えを出力せよ。

解説

答えは \(N\) を2で割った切り上げとなります。
Pythonで a÷bの切り上げは(a+b-1)//bとなるのでN÷2の切り上げは(N+1)//2となります。

解説

まず、\(N\) をint型で受け取ります。

# 入力
N=int(input())

N÷2の切り上げである(N+1)//2を出力します。

# 出力
print((N+1)//2)

解答

# 入力
N=int(input())

# 出力
print((N+1)//2)

ABC157 B – Bingo

問題

解説

ビンゴカードを2次元配列で管理し、ビンゴが達成しているか判定する。

解説

ビンゴカードを2次元配列で管理します。

# ビンゴカード
bingo=[[False]*3 for i in range(3)]

選ばれた数がビンゴカードの中にあるかどうかを判定し、選ばれた数があれば、ビンゴカードのその位置をTrueにします。

# 選ばれた数がビンゴカードの中にあるかどうかを判定する。
for i in range(3):
  for j in range(3):
    if A[i][j] in b:
      bingo[i][j]=True

その後、縦・横・斜めがそろっているかを判定します。

解答

# 入力
A=[list(map(int,input().split())) for _ in range(3)]
N=int(input())
b=[int(input()) for _ in range(N)]

# ビンゴカード
bingo=[[False]*3 for i in range(3)]

# 選ばれた数がビンゴカードの中にあるかどうかを判定する。
for i in range(3):
  for j in range(3):
    if A[i][j] in b:
      bingo[i][j]=True

# 解答
ans='No'

# 縦・横がビンゴになっているかどうか?
for i in range(3):
  if bingo[i][0] and bingo[i][1] and bingo[i][2]:
    ans='Yes'
  if bingo[0][i] and bingo[1][i] and bingo[2][i]:
    ans='Yes'

# 斜めがビンゴになっているかどうか?
if bingo[0][0] and bingo[1][1] and bingo[2][2]:
  ans='Yes'
if bingo[0][2] and bingo[1][1] and bingo[2][0]:
  ans='Yes'

# 解答を出力
print(ans)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次