ARC108

1完だった。

A - Sum and Product

1~106 まで探索すればよい。
最初range(1, 106)としてWAとなったから、range(1, 107) として通したけど、range(1, 106+1)とすればよかったことに後で気づいて発狂。
まぁ方針はあってたから良しとする。
ちなみに二次方程式で解いた人もいたらしい。解と係数の関係ぽいからかな。

コード

S, P = MI()

flag = False
for n in range(1, 10**7):
    m = S - n
    if m > 0:
        if n * m == P:
            flag = True
            break
     
if flag:
    print("Yes")
else:
    print("No")

B - Abbreviate Fox

解けませんでした。 愚直にループしたらTLEで最後まで分からず終了。
スタックを用いればよかったらしい。

  • 文字列(またはリスト)の末尾の要素を削除したいときは pop() を使えばいい。
  • 末尾の三文字を指定したいときはスライスで
  • 試行錯誤しているうちに見つけた便利な関数
def remove_at(i, s):
    return s[:i] + s[i+1:]

コード

N = I()
s = S()
x = []

for i in s:
    x.append(i)
    if x[-3:] == ["f","o","x"]:
        x.pop()
        x.pop()
        x.pop()

print(len(x))

感想とか

f:id:matrochca:20201122041032p:plain 4回以内には茶色になれそうかなぁ