AtCoder Beginner Contest 020
はい。
https://beta.atcoder.jp/contests/abc020
A - クイズ
Python2
print ['','ABC','chokudai'][int(raw_input())]
1と2で。
B - 足し算
Python2
print int(''.join(map(str,raw_input().split())))*2
strを結合してintにキャストして。多分、Bを10で割る、100で割るとかで解が0になるとこを確認してソレに合わせてAを10x倍してとかでも出来ないことはないと思うけど面倒そう。
C - 壁抜け
Python3
mod=1000000007 xy=[(1,0),(-1,0),(0,1),(0,-1)] h,w,t=map(int,input().split()) s=[] for i in range(h): a=input() s.append(a) if "S" in a: x=(i,a.index("S")) if "G" in a: y=(i,a.index("G")) p,q=0,t for i in range(100): c=[[mod for i in range(w)] for j in range(h)] c[x[0]][x[1]]=0 c[y[0]][y[1]]=0 now=set() now.add(x) k=(p+q)//2 while len(now): d,e=now.pop() for i,j in xy: if 0<=i+d<h and 0<=j+e<w: if s[i+d][j+e]=="#": if c[i+d][j+e]>c[d][e]+k and t>c[d][e]+k: c[i+d][j+e]=c[d][e]+k now.add(((i+d),(j+e))) elif s[i+d][j+e]=="." : if c[i+d][j+e]>c[d][e]+1 and t>c[d][e]+1: c[i+d][j+e]=c[d][e]+1 now.add(((i+d),(j+e))) else: if c[i+d][j+e]<=c[d][e]+1<=t: c[i+d][j+e]=c[d][e]+1 if c[y[0]][y[1]]:p=k else: q=k if q-p<2: break print(p)
解説も読んで問題文もよく読んだ。H,Wがかなり狭くて、マス移動も必ず黒マスを通る必要があるようにされてるらしいので結構適当に計算してもなんとかなる模様。xを最小0、最大tとして二分探索するような値をxに仮定してGにたどり着ければ最小値を更新、辿りつけなければ最大値を更新して、マス移動は幅優先かな?コレしか書き方分かりません。けどなんとかなりましたね。