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)