初心者のプログラミング日記

プログラミング初心者の日記

プログラミングに関することを書いていきます。

ABC157(A~Cまで)

A - Duplex Printing

https://atcoder.jp/contests/abc157/tasks/abc157_a

N=int(input())

if N%2==0:
    print(N%2)
else:
    print(N//2+1)

割り切れるならそそまま出力、あまりが出るなら切り捨てて1を足せば答えになります

B - Bingo

https://atcoder.jp/contests/abc157/tasks/abc157_b

A=[list(map(int, input().split())) for l in range(3)]
N=int(input())

#マス開け
for i in range(N):
    num=int(input())
    for j in A:
        if num in j:
            index=j.index(num)
            j[index]="True"
            
for i in range(3):
    #横の判定
    if A[i][0]==A[i][1]==A[i][2]:
        print("Yes")
        exit()
 
    #縦の判定
    list=[x[i] for x in A]
    if list[0]==list[1]==list[2]:
        print("Yes")
        exit()

#斜めの判定
if A[0][0]==A[1][1]==A[2][2] or A[0][2]==A[1][1]==A[2][0]:
    print("Yes")
else:
    print("No")

マスを開けた所はTrueではくても区別できるならなんでもいいです。

C - Guess The Number

https://atcoder.jp/contests/abc157/tasks/abc157_c

N,M=map(int,input().split())
ans=["false","false","false"]

for i in range(M):
    a,b=map(int,input().split())
    
    if ans[a-1]!="false":
        if ans[a-1]!=b:
            print(-1)
            exit()
                
    ans[a-1]=b
    
    if ans[0]==0:
        print(-1)
        exit()
    
if "false" in ans:
    index=[i for i, x in enumerate(ans) if x == 'false']
    for i in index:
        ans[i]=0
    print("".join(map(str,ans)))
else:
    print("".join(map(str,ans)))

合ってるか自信ないんですけど解いてみました。
調べてみたんですけど以下の記事の方がコードがキレイでしたので参考にどうぞ
https://qiita.com/ki_shi_0922/items/918aeab9ddf858080d6a

D以降は問題文の意味すらわからなかったので解いていません