>

N은 임의의 숫자입니다

나는 바운드와 혼동된다.

도움이 필요합니다.


  • 답변 # 1

    글꼴, 난수 n , a 가 있습니다 b  그런 2^a <= n <= 2^b  아니면 그냥 k  그런 2^(k-1) <= n <= 2^k - 1  (1). 우리는 2^n 보다 작은 숫자에 대해 log(2^n) = n * log(2) = n 가 필요합니다  그것을 나타내는 비트 (2). 예를 들면 다음과 같습니다.

    5 : 4<5<8;4는 3 비트, 8은 5 비트가 필요합니다. =>5는 4 비트가 필요합니다.

    23 : 16 = 2 ^ 4<23<32 = 2 ^ 5;23을 나타내려면 5 비트가 필요합니다

    결론적으로, 임의의 수 n에 대한 정확한 비트 수 b에 대해서는 다음 공식을 사용할 수 있습니다.

    b = floor(log(n)) + 1

    우리가 사용할 빅 -O 표기법은 O(floor(log(n)) + 1) = O(logn) 입니다. .

    <시간>

    추가 정보 :

    SO 답변

    기사

    <시간>

    1) 난수, 정수, 양수 (음수도 일반화하기는 쉽지만)라고 가정했는데 문제의 경우라고 생각합니다. 소수에 대해서는이 공식을 일반화하기가 조금 더 어렵습니다

    2) 로그 표기법은 밑이 2 인 로그를 나타냅니다

  • 이전 python - 키 이벤트 바인딩으로 tkinter 클래스의 이미지를 업데이트하는 방법은 무엇입니까?
  • 다음 php - 성공적인 결제 후 사용할 수 있도록 추가 정보를 Cybersource Secure Acceptance로 보낼 수 있습니까?