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)