問題はこちら
3完
A
"o"がN個並んだ文字列は、 N * "o" と書ける。
N = int(input()) print("L" + N * "o" + "ng")
B
2進数に変換する関数はbin。
その後、右側にある0の個数を数える方法を考えればよい。
末尾から0であるかの判定をしていく方法でもよい。
N = int(input()) def count_trailing_zeros(string): # 右側の0の文字数 = 全体の文字数 - 右から0を取り除いた後の文字数 return len(string) - len(string.rstrip('0')) # MEMO # rstrip : 文字列の右側(末尾)から指定された文字を取り除くメソッド # lstrip という文字列の左側(先頭)から指定された文字を取り除くメソッドもある print(count_trailing_zeros(str(bin(N))))
C
問題文の"良い整数"(10進数で表記したときに、0,2,4,8のみが出現する)は5つの文字だけで10進数を表していることから、5進数で考えた後に各位の数を2倍にすればよいと思った。
1番小さい5進数は0(5)、2番目に小さい5進数は1(5)だから、N番目に小さい5進数はN-1(5)である。
よってN-1(5)を求め、各位の数値を倍にすればよい。
自画自賛だが、うまく発想できたと思う。
N = int(input()) def to_base_5(n): # 5進数に変換する関数 result = '' while n > 0: n, remainder = divmod(n, 5) result = str(remainder) + result return '0' if result == '' else result str_Quinary = to_base_5(N-1) print(int(str_Quinary)*2)
D
Cを早めに解けて調子に乗ったが、Dがわからず。
後で追記します。
E
F