【AtCoder】ABC336解説(Python)

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

目次

ABC336 A – Long Loong

問題

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

問題の要約

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

解説

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の個数を求めよ。

解説

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()

ABC336 C – Even Digits

問題

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

問題の要約

非負整数  \(N\) を 10 進法で表したときに、偶数の数字のみが登場するとき、\(N\) を 良い整数 と呼びます。良い整数のうち小さい方から  \(N\) 番目の整数を求めよ。

解説

 良い整数 を小さい順に並べると、0, 2, 4, 6, 8, 20, 22, 24, 26, 28, …となる。これは0, 2, 4, 6, 8を用いた5進数だと考えられるので、0, 1, 2, 3, 4, 5を用いた5進数の \(N\) 番目を2倍したものが答えになります。

解説

次に入力 \(N\) をint型として受け取ります。
0 始まりなので、 \(N\) を 1 減らします。

# 入力
N = int(input())
# Nを1減らす
N -= 1

N=0のとき0を出力します。

# N=0のとき0を出力
if N==0:
  print(0)
  exit()

\(N\) 番目の5進数を求めます。

# 整数を格納するためのリスト
ans = []

# Nが0になるまで繰り返す
while N:
  # 5で割った余りをリストに追加
  ans.append(N % 5)
  # Nを5で割った商に更新
  N //= 5

逆順に並び替え、答えを2倍にして出力します。

# 逆順に並び替え
ans.reverse()

for x in ans:
  # 要素を2倍して、改行なしで出力
  print(x * 2, end='')
# 最後に改行を出力
print()

解答

# 入力
N = int(input())
# Nを1減らす
N -= 1

# N=0のとき0を出力
if N==0:
  print(0)
  exit()
    
# 整数を格納するためのリスト
ans = []

# Nが0になるまで繰り返す
while N:
  # 5で割った余りをリストに追加
  ans.append(N % 5)
  # Nを5で割った商に更新
  N //= 5
  
# 逆順に並び替え
ans.reverse()

for x in ans:
  # 要素を2倍して、改行なしで出力
  print(x * 2, end='')
# 最後に改行を出力
print()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次