CodeIQ「バイナリ・カウント」問題 みんなのコード

1
重城良国 @YoshikuniJujo

main=putStr$show(f$10^3)++" "++show(f$10^10);f 0=0;f n|odd n=2*f(div n 2)+(n+1)`div`2|1>0=f(n-1)+b n;b 0=0;b n=n`mod`2+b(n`div`2)#バイナリカウント

2015-05-21 09:20:46
Shingo Yoshiike @pi301415

0から2**n-1(2のn乗)までの1の数をE(n)とすると、E(n)=2**(n-1)+E(n-1)×2で求められる この性質を使って求めました。 ideone.com/fork/aaNyWT

2015-05-22 20:08:32
ⓂⓐⓔⓗⓐⓡⓐⓂⓐⓢⓐⓗⓘⓓⓔ @maehrm

恥ずかしいですが、公開します。log2でビット数を計算しましたが、他の方の解答から、Fixnum#bit_length を知り勉強になりました(^^)。 #バイナリカウント #codeiq tinyurl.com/m9b5yff

2015-05-25 21:16:37
seizh @SeizhLab

@maehrm bit_lengthはRuby 2.1で加わったメソッドですが、それほど使うケースがないので、あんまり知ってる人がいないと思います。それ以前のバージョンでの代用方法は n.to_s(2).size とかですかね。 #バイナリカウント

2015-05-25 23:21:16
Kawazoe @riverplus

以前の問題ですが「バイナリ・カウント」問題についてwinterboumさんからコード頂きました! ideone.com/BWphw9

2015-06-20 23:08:54