######問題
入力にa
とb
があるとして1からa
の回数分2進数に変換して01で表示されているの物の中から1の数がb
個の物だけを数えたいとします。
例.
a=10 b=2の場合、1の数が2個なのは
11, 101, 110, 1001, 1010なので
答えは5となる。
でこれがa=100000 b=17(答え:0回)の場合が知りたいのですが
######自分なりに考えた結果
lang
1a = 100000 2b = 17 3cnt = 0 4(1..a).each do |i| 5 ans = i.to_s(2).split(//) 6 ans = ans.map(&:to_i) 7 ans = ans.inject(:+) 8 if ans == b 9 cnt += 1 10 end 11end 12puts cnt
と自分なりに考えたりググってみたりでコーディングしたのですが、これだと処理時間がかかりすぎるといわれてしまいます。
######聞きたいこと
上記よりも早く処理ができる記述の仕方を教えて頂きたいです。
お手数ではありますがよろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/30 12:53