【AtCoder】ABC336解説(Python)

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

目次

ABC336 A – Long Loong

問題

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

問題の要約

1個のL, \(N\)個のo, 1個のn, 1 個のgをこの順に並べた文字列を出力せよ。

制約

・\(1 \le N \le 2024\)
・\(N\) は整数

入力

\(N\)

出力

答えを出力せよ。

解説

1個のL, \(N\)個のo, 1個のn, 1 個のgを結合して出力します。

解説

'L'+ 'o' * int(input()) + 'ng'を出力します。

# 出力
print('L'+ 'o' * int(input()) + 'ng')

解答

# 出力
print('L'+ 'o' * int(input()) + 'ng')

ABC336 B – CTZ

問題

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

問題の要約

正の整数 \(N\) が与えられるので、 \(N\) を2進表記したときに末尾に連続する0の個数を求めよ。

制約

・\(1 \le N \le 10^9\)
・\(N\) は整数

入力

\(N\)

出力

\(N\) を2進表記したときに末尾に連続する0の個数を求めよ。

解説

2進表記したときに末尾に連続する0の個数は、10進法表記で2で割り切れる回数なので、その回数を求める。

解説

次に入力 \(N\) をint型として受け取ります。

# 入力
N=int(input())

\(N\) が2で割り切れる回数を求めます。\(10^9 \lt 2^{30}\)なので2で割り切る操作は30回行えば十分です。

2で割り切れない時、それまでに2で割った回数iを出力します。

# 10^9<2^30なので30回繰り返す
for i in range(0,31):
  # 2で割り切る時、2で割る
  if N%2==0:
    N=N//2
  # 2で割り切れない時、それまでに2で割った回数(i)を出力する。
  else:
    print(i)
    exit()

解答

# 入力
N=int(input())

# 10^9<2^30なので30回繰り返す
for i in range(0,31):
  # 2で割り切る時、2で割る
  if N%2==0:
    N=N//2
  # 2で割り切れない時、それまでに2で割った回数(i)を出力する。
  else:
    print(i)
    exit()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次