AtCoder Beginner Contest 158の感想

ABC158に参加した。

AtCoder Beginner Contest 158 - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

A – Station and Bus

Aのみ又はBのみの場合はNoになる。

s = input()

if len(list(set(s))) == 1:
    print('No')
else:
    print('Yes')

B – Count Balls

A+Bの個数を数え、余りにAが何個あるのかカウントする

n, a, b = map(int, input().split())

x = n // (a + b)
y = n % (a + b)

if y <= a:
    print(x * a + y)
else:
    print(x * a + a)

C – Tax Increase

A<=B<=100なので、元の値段は最大でも100/0.08=1250となる。

O(10^3)なので全探索しても間に合う。 

凡ミスに気づかずWAを出してしまったのが痛い。

import math

a, b = map(int, input().split())
limit = int(100 / 0.08) + 1
ans = limit

for i in range(1, limit):
    x = math.floor(i * 0.08)
    y = math.floor(i * 0.1)
    if x == a and y == b:
        ans = min(ans, i)

print(ans) if not ans == limit else print(-1)

D – String Formation

始め、先頭と末尾だけで別の配列を用意するやりかたで実装していたが上手く出来ず。

時間ギリギリになってdequeを思いつくも時間内に実装が間に合わず。

終了後に提出してACになったコードがこちら。

from collections import deque

s = deque(input())
q = int(input())
query = [input().split() for _ in range(q)]

reverse = False

for i in range(q):
    now = query[i]
    if now == ['1']:
        reverse = not reverse
    else:
        f = now[1]
        c = now[2]
        if f == '1':
            s.append(c) if reverse else s.appendleft(c)
        else:
            s.appendleft(c) if reverse else s.append(c)

if reverse:
    s.reverse()

print(''.join(s))

D問題を正解出来なかったこと、C問題でWAを出してしまったことからレートは微増にとどまった。

コメント

タイトルとURLをコピーしました