AtCoder Beginner Contest 045 参加記
はい。 ooox http://abc045.contest.atcoder.jp
A - 台形 / Trapezoids
a=int(raw_input()) b=int(raw_input()) h=int(raw_input()) print (a+b)*h/2
(上底+下底)*高さ/2 証明は面倒くさいんですが、上底と下底の長さが同じとかでも長方形正方形でも場合分けする必要なし。
B - 3人でカードゲームイージー / Card Game for Three (ABC Edit)
a=raw_input() b=raw_input() c=raw_input() f=0 while 1: # print a,b,c if f==0: if len(a)==0: print 'A' break elif a[0]=='b': f=1 elif a[0]=='c': f=2 a=a[1:] elif f==1: if len(b)==0: print 'B' break elif b[0]=='a': f=0 elif b[0]=='c': f=2 b=b[1:] else: if len(c)==0: print 'C' break elif c[0]=='a': f=0 elif c[0]=='b': f=1 c=c[1:]
もうちょっと短く書けただろうな。。勝利条件がカードが0になった時ではなくて、0の時にターンが来ると勝利。シミュレートすれば誰が勝利か分かるはず。
C - たくさんの数式 / Many Formulas
s=raw_input() t=len(s)-1 tmp=2**t ans=0 for i in range(tmp): p=bin(i)[2:] p='0'*(t-len(p))+p x='' for j,k in enumerate(s): x+=k if j!=t and p[j]=='1': x+='+' ans+=eval(x) print ans
Sの桁数-1の箇所に+演算子を挟むか、挟まずに2桁以上の長さの数になるかで数式のパターン数が増える。Sは最大で10桁なので全探索でイケるというか、全部調べないと求まらないと思う。
D - すぬけ君の塗り絵 / Snuke's Coloring
部分点がなくさっぱりダメだった。久しぶりにC++も試してみたけどintやlongとか配列とか色々忘れてた。そうでなくスムーズに書けてもどっちにしろ全部総当りでっていうのはACにならなかったけど。。