B - log2(N) Editorial by NASU41


公式解説 の解法3「整数の bit表現 を利用した解法」に関する補足情報です.

よく用いられるbit演算については, 言語ごとの標準ライブラリで提供されていることがあります. 例えばJavaでは, java.lang.Longクラスのライブラリ関数としてnumberOfLeadingZerosという関数(上位の連続する0のbitを数える)が存在し, これを用いて以下のようなプログラムを書くことが可能です (以下のコードでACを得られることは, この提出から確認できます).

import java.util.*;

public class Main {    
    public static void main(String[] args) throws Exception{
        final Scanner sc = new Scanner(System.in);        
        final long N = sc.nextLong();
        System.out.println(63 - Long.numberOfLeadingZeros(N));        
    }
}

このように, 言語ごとに提供されているライブラリを知っておくことで楽に回答できる問題が出題されることも(特に低~中難易度帯では)少なくありません. たまには自分の使っている言語にどのような標準ライブラリが存在するか調べてみてはいかがでしょうか.

posted:
last update: