日刊競プロ ABC 234 -C Happy New Year!-
問題文
10 進法で表記したときに 0,2 のみからなる正整数のうち、 K 番目に小さいものを求めてください。
制約
K は 1 以上 10
18以下の整数
考えたこと
最初に考えた時は??だったが,よくよく考えてみると10進数の数を2進数に直し,最後に2掛ければ良いのでは?と考えた.
回答
K=int(input())
ans=''
while K>=1:
if K%2==1:
ans+='1'
elif K%2==0:
ans+='0'
K=K//2
print (int(ans[::-1])*2)
pythonでは一発で2進数に変換することもできるため,以下も試してみた所一応ACでした.
別の回答
K=int(input())
print (int(format(K,'b'))*2)