ぼちぼち終わりが見えてきた。
http://arc012.contest.atcoder.jp/assignments
C++の時の記事。
http://kmjp.hatenablog.jp/entry/2013/02/16/0900
http://kmjp.hatenablog.jp/entry/2013/02/16/0930
A - 週末
曜日に対して週末までの日数を答える問題。
曜日は7個しかないので、全部連想配列に入れてしまえばよい。
m={"Monday":5,"Tuesday":4,"Wednesday":3,"Thursday":2,"Friday":1}; print(m.get(raw_input(),0))
B - アキレスと亀
1回アキレスが元々亀のいた位置に到達するたび、両者の距離は両者の速度の比率で減少していく。
後はそれをコードに書くだけ。
小数をrangeに指定すると誤差で範囲がずれるのが怖かったので0.1足してみた。
N,Va,Vb,L=map(float,raw_input().split(" ")) for i in range(int(N+0.1)): L *= Vb/Va print(L)
C - 五目並べチェッカー
五目並べの盤目の状態が与えられて、五目並べのプレイ中正常に到達できる状態か答える。
最後に打った側の手をどれか1個減らし、5目そろってないことを確認する。
B=[]; for i in range(19): B.append(list(raw_input().strip())) def check(BO): for y in range(19): for x in range(19): if BO[y][x]!='.': if x<=14 and BO[y][x]==BO[y][x+1]==BO[y][x+2]==BO[y][x+3]==BO[y][x+4]: return 0 if y<=14 and BO[y][x]==BO[y+1][x]==BO[y+2][x]==BO[y+3][x]==BO[y+4][x]: return 0 if x<=14 and y<=14 and BO[y][x]==BO[y+1][x+1]==BO[y+2][x+2]==BO[y+3][x+3]==BO[y+4][x+4]: return 0 if x>=4 and y<=14 and BO[y][x]==BO[y+1][x-1]==BO[y+2][x-2]==BO[y+3][x-3]==BO[y+4][x-4]: return 0 return 1 no=nx=0 for B2 in B: for b in B2: if b == 'o': no += 1 if b == 'x': nx += 1 t='' if no==nx: t='x' elif no==nx+1: t='o' else: print("NO") exit() if nx<5: print("YES") exit() for y in range(19): for x in range(19): if B[y][x]==t: B[y][x]="." if check(B): print("YES") exit() B[y][x]=t print("NO")
まとめ
PythonはA==B==Cみたいな書き方ができるのはいいな。