3完。68th。もう少し上行けたはず。
A問題
A: 台形 / Trapezoids - AtCoder Beginner Contest 045 | AtCoder
台形の公式にぶち込む。python2でかいた。
print (input()+input())*input()/2
B問題
B: 3人でカードゲームイージー / Card Game for Three (ABC Edit) - AtCoder Beginner Contest 045 | AtCoder
言われたとおりにシミュレーションする。Python3でかいた。多分繰り返し処理はもう少し綺麗にかけるけど、とりあえずACするために雑にかいた。
a = list(input()) b = list(input()) c = list(input()) current = "a" while True: if current == "a": if len(a) == 0: print("A") break else: current = a.pop(0) elif current == "b": if len(b) == 0: print("B") break else: current = b.pop(0) else: if len(c) == 0: print("C") break else: current = c.pop(0)
C問題
C: たくさんの数式 / Many Formulas - AtCoder Beginner Contest 045 | AtCoder
プラスを入れていく位置の候補は2 ** (文字列の長さ - 1) 通りあるので、bitを使ってプラスが入った文字列を形成してevalで計算。こういう場合はevalして大丈夫ですから>< Python3でかいた。
def solve(): n = input() ans = 0 for i in range(2 ** (len(n) - 1)): insertcount = 0 count = 0 line = list(n) j = i while j > 0: if j & 1 == 1: line.insert(1 + count + insertcount, "+") insertcount += 1 count += 1 j >>= 1 ans += eval("".join(line)) print(ans) if __name__=="__main__": solve()
D問題
D: すぬけ君の塗り絵 / Snuke's Coloring - AtCoder Beginner Contest 045 | AtCoder
時間内に解けなかったので悔しい。いろいろ解放があるとは思うが、黒塗りになっている場所とその周りに1をたしていき、dictionaryで持っておいて置いて、最後に数え上げる、という方針でAC。3secでよかった。2secなら落ちていた。
注意すべきは端の部分では3x3の三角形が作れないこと。そのため、端の部分にはあらかじめ足さないように処理するとよい。あと0個のものは(正方形が作れる個数 - 1〜9個の黒塗りになっている部分を含んだ正方形の合計個数)で求められるので、わざわざか添え上げる必要が無い。
雰囲気的にO(N)でしか間に合いそうになかったので、うまく思いつくことが出来てよかったが、時間内に通せなかったのが心残り。Python3で解いた。
def solve(): w, h, n = [int(i) for i in input().split()] dic = dict() for i in range(n): a, b = map(lambda x: int(x) - 1, input().split()) for j in range(3): for k in range(3): aj = a + j - 1 bk = b + k - 1 if 0 < aj and aj < w - 1 and 0 < bk and bk < h - 1: if (aj, bk) in dic: dic[(aj, bk)] += 1 else: dic[(aj, bk)] = 1 ans = [0 for i in range(10)] for v in dic.values(): ans[v] += 1 for i in range(10): if i == 0: print((w - 2) * (h - 2) - sum(ans)) else: print(ans[i]) if __name__=="__main__": solve()
Submission #878283 - AtCoder Beginner Contest 045 | AtCoder
D問題を時間に通せたら非常に良かったんですが。。。反省だなあ。
それとこの前問題を読んだだけのCFを埋めておきたい。(unratedになったやつ)