AtCoder Beginner Contest 045 参加記

はい。 ooox http://abc045.contest.atcoder.jp

A - 台形 / Trapezoids

python

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)

python

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

python

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にならなかったけど。。