bn이라는 일련의 숫자가 있다고 가정하고 이것은 b1=1 및 bn+1/bn=2n과 같은 반복 관계를 사용하여 표현됩니다. 주어진 n에 대해 log2(bn)의 값을 찾아야 합니다.
따라서 입력이 6과 같으면 출력은 log2(bn) =(n * (n - 1)) / 2 =(6*(6-1))/2 =15와 같이 5가 됩니다.
이 관계를 다음과 같이 풀면 이 문제를 해결할 수 있습니다. -
bn+1 /bn =2 n
bn /bn-1 =2 n-1
…
b2 /b1 =2 1 , 위의 모든 것을 곱하면 얻을 수 있습니다.
(bn+1 /bn ).(bn /bn-1 )……(b2 /b1 ) =2 n + (n-1)+…..+1
따라서 bn+1 /b1 =2 n(n+1)/2
1 + 2 + 3 + ...... + (n-1) + n =n(n+1)/2
따라서 bn+1 =2 n(n+1)/2 * b1; 초기값 b1 =1
따라서 bn+1 =2 n(n+1)/2
n에 (n+1)을 대입하면 다음을 얻습니다.
bn =2 n(n-1)/2
양변에 로그를 취하면 다음을 얻습니다.
로그2 (bn ) =n(n-1)/2
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def add_upto_n(n): res = (n * (n - 1)) / 2 return res n = 6 print(int(add_upto_n(n)))
입력
6
출력
15