어떤 정수 n이 주어졌을때, n보다 작거나 같으면서 가장 가까운 2의 거듭제곱이 필요할때가 있다 구체적으로 $2^{x} = n$을 만족하는 정수 x를 찾고 싶을 때가 있다. 제일 쉬운 방법은? import mathn = int(input())print(int(math.log2(n))) 근데 얘는 문제가 n이 엄청 크면 실수오차 발생으로 틀릴 수 있다는거 이를 피하는 방법은 2씩 직접 곱해서 찾는 방법이 있고 import mathn = int(input())x = 0v = 1while v n: break x += 1 print(x) 그런데 이 방법은 O(logN)이다. 메소드 중에 bit_length()라는 메소드가 있다 어떤 정수를 이진수로 표현할때 그 이..
https://atcoder.jp/contests/abc349/tasks/abc349_d D - Divide IntervalAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp L부터 R-1까지 연속된 정수 수열이 주어질때, 이 수열을 최소 개수의 구간으로 나눌려고 한다 L $li = 2^{k}(j), ri = 2^{k}(j+1)$을 만족해야한다. 접근은 상당히 잘 했다 현재 시점 L을 기준으로 $L = 2^{k}j$를 만족하는 모든 k를 먼저 찾는다. 이거는 L이 2로 나누어 떨어지면,..