【AtCoder】ABC266解説(Python)

AtCoder Beginner Contest 266の解説記事です。

目次

ABC266 A – Middle Letter

問題

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

問題の要約

英小文字からなる長さが奇数の文字列 S が与えられるので、S の中央の文字を出力せよ。

入力

S

出力

 答えを出力せよ。

解説

文字列の長さを取得して中央が何文字目になるかを考える。

解説

まず入力をSで受け取ります。

S=input()

Pythonでは文字列の長さをlenで取得することができます。
今回の文字列の長さは奇数なので、中央は((文字列の長さ)+1)/2文字目になります。これをnと置きます。

n=(len(S)+1)//2

Pythonでは最初の文字は0文字目とカウントするため、求める文字はn-1文字目になります。

print(S[n-1])

解答

S=input()
n=(len(S)+1)//2
print(S[n-1])

ABC266 B – Modulo Number

問題

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

問題の要約

\(-10^{18} \le N \le 10^{18}\) を満たす整数 \(N\) に対して、\(N – x\) が 998244353 の倍数となるような、\(0 \le x < 998244353\) を満たす整数 \(x\) を求めよ。

制約

・\(-10^{18} \le N \le 10^{18}\)

入力

\(N\)

出力

答えを出力せよ。

解説

余りを考える。

解説

\(N – x\)が 998244353 の倍数となるためには、\(N\) を998244353で割った余りを \(x\) とすればよい。

なぜならば、
\(N =p×998244353 + x\) (\(p\) は998244353で割ったときの商、\(x\) は余り)
とすれば、
\(N – x = p×998244353\)
となり、998244353の倍数になるからです。

余りを求めるには% を用いることができます。

解答

print(int(input())%998244353)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次