ユニークビジョンプログラミングコンテスト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))