2011年7月21日木曜日

TopCoder SRM206 Div2 250Pts

今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。

「10進数の正の整数nが与えられたとき、2進数表記したときに何ビット必要になるかを返すメソッドを作成せよ。」というのが問題である。

私の解答はこちら。

public class Bits {
 public int minBits(int n) {
  int digits = 0;
  while( n >= 1 ){ // 繰り返し2で割って、桁数を判断
   digits++;
   n /= 2;
  }
  return digits;
 }
}

得点は248.09/250。全体の中央値がおよそ244点という易問。ちなみに、この問題はJavaであれば、ワンライナーで書ける。以下がその解答である。

public class Bits {
 public int minBits(int n) {
    return Integer.toBinaryString(n).length();
 }
}

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計