日刊競プロ ABC 234 -C Happy New Year!-

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)  

いいなと思ったら応援しよう!