AtCoder Beginner Contest 158 過去問

A問題

難なくクリア

str_ = input()
print('Yes') if 'A' in str_ and 'B' in str_ else print('No')

B問題

青球をA個、赤球をB個並べて、N個目までの青球の数を数える問題。
最初に提出したのはWAで弾かれました。

n, a, b = map(int, input().split(' '))
print(int(n%(a+b))+int((n//(a+b))*a))

最後の周期で並んでいる青球の個数をmin(N%(A+B), A)で数えています。

n, a, b = map(int, input().split(' '))
print(min(int(n%(a+b)),a)+int((n//(a+b))*a))

C問題

8%時の消費税額A、10%時の消費税額Bが一致する金額の最少額を求める問題。
注意は5円が消費税額となるのは5.00~5.99...円としています。

こんな事しなくとも1~1000の総当たりで、
8%と10%の消費税額が一致するときに、printした方がシンプルですね・・・。

a, b = map(int, input().split(' '))
b_l = list(range(int(b/0.1), int((b+0.99)//0.1+1)))
for b_ in b_l:
  s = int(b_*0.08//1)
  if s==a:
    print(str(b_))
    exit(0)
print('-1')

D問題

題で示された操作の通り、文字列変換をしていきます。
しかし判定はTLE。
恐らくテストケース後半で長い文字列が与えられてるのでしょう。

s = input()
q_ = int(input())
 
for q in range(q_):
  t = input().split(' ')
  if t[0]=='1': s=s[::-1]
  elif t[0]=='2':
    if t[1]=='1': s=t[2]+s
    elif t[1]=='2': s+=t[2]
print(s)