【AtCoder】ABC398解説(Python)

ユニークビジョンプログラミングコンテスト2025 春(AtCoder Beginner Contest 398)の解説記事です。

目次

ABC398 A – Doors in the Center

問題

問題文の要約は以下の通りです。

問題の要約

以下の条件を全て満たす長さ \(N\) の文字列を求めよ。

  • 文字列中に = は \(1\) 個または \(2\) 個含まれる。\(2\) 個含まれる場合、それらの = は隣接している
  • 各文字は - または = である
  • 回文である

解説

\(N\) の偶奇で場合分けを行います。

\(N\) が偶数のとき

- を  \(\frac{N-2}{2}\) 個、= を \(2\) 個、- を  \(\frac{N-2}{2}\)  個つなげた文字列が答えになります。

pythonでは'-'((N-2)//2)+'=='+'-'((N-2)//2)のように書くことができます。

\(N\) が奇数のとき

- を  \(\frac{N-1}{2}\) 個、= を \(1\) 個、- を  \(\frac{N-1}{2}\) 個つなげた文字列が答えになります。

pythonでは'-'((N-1)//2)+'='+'-'((N-1)//2)のように書くことができます。

解説

入力を受け取ります。

# 入力
N=int(input())

長さの偶奇によって場合分けして出力します。

# 長さの偶奇によって場合分けして出力
if N%2==0:
  print('-'*((N-2)//2)+'=='+'-'*((N-2)//2))
else:
  print('-'*((N-1)//2)+'='+'-'*((N-1)//2))

解答

# 入力
N=int(input())

# 長さの偶奇によって場合分けして出力
if N%2==0:
  print('-'*((N-2)//2)+'=='+'-'*((N-2)//2))
else:
  print('-'*((N-1)//2)+'='+'-'*((N-1)//2))
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次