AtCoder Beginner Contest 118

はい。
https://atcoder.jp/contests/abc118

A - B +/- A

Python3

a,b=map(int,input().split())
print([b-a,a+b][b%a==0])

問題文の指示通りに+と-を計算する。

B - Foods Loved by Everyone

Python3

n,m=map(int,input().split())
l=set([i+1 for i in range(m)])
for i in range(n):
    k=[int(j) for j in input().split()]
    t=set([k[j+1] for j in range(k[0])])
    l=l&t
print(len(l))

1からmまでを用意する。各行の好きなものと重複してるものだけ残して最後に残ったのが全ての人が好きと答えたものという感じで処理してました。 最初に1からmまで用意しても1人目の処理でその1人目の好きなものしか残らないので、特に意味はないのですけどforの中で1人目とそれ以外で分岐が必要になったりするのでソースの長さはあまり変わらないんじゃないかと。書きやすい書き方でいいと思います。

C - Monsters Battle Royale

Python3

n=int(input())
l=[int(i) for i in input().split()]
x=ans=min(l)
while 1:
    t=[-1,-1]
    for i,j in enumerate(l):
        if j%x and ans>j%x:
            ans=j%x
            t[0]=i
            t[1]=ans
    l[t[0]]=ans
    x=ans
    if t[0]==-1: break
 
print(x)

はい、この操作で残るのほんとに最大公約数に必ずなるのかな。とAC出ても不安だったんですけども最後に数列の全ての数と剰余が出なくなってから解を確定させているので最大公約数で間違いないです。多分