문제
태영이의 취미는 2의 제곱수를 계산하는 것이다.
태영이는 2^64 = 18,446,744,073,709,551,616 이라는 것을 알고 있고 직접 20부터 2씩 곱해서 264을 구할 것이다.
하지만 태영이는 2씩 곱하는 와중에 1을 빼버리는 실수를 딱 한 번 해버리고 말았다. (실수는 단 한 번만 하며, 그 후에는 2로 곱하는 계산을 정확하게 수행한다.)
예를 들어, 2^1 = 2로 계산을 잘 하다가 2^2 = 3으로 계산해버리는 어이없는 실수를 해버리는 것이다.
그렇게 된다면 2^3 = 6 , 2^4 = 12 ... 로 계산하여 점점 오차가 커진다.
태영이가 구한 2^64인 N이 주어졌을 때, 태영이가 처음으로 실수한 구간을 찾아주자.
입력
양의 정수 N이 주어진다.
N은 태영이가 2^64를 계산했을 때 나올 수 있는 수이다.
출력
태영이가 처음으로 실수한 구간을 찾아주자.
2K = 2K-1로 계산해버렸을 때의 K를 출력하면 된다.
제한
- 2 ≤ N ≤ 18,446,744,073,709,551,615 = 2^64 - 1
예제 입력 1
18446744073709551615 |
예제 출력 1
64 |
2^63 = 9,223,372,036,854,775,808 까지는 계산을 잘 하다가
2^64를 2^64-1인 18,446,744,073,709,551,615로 계산을 잘못해버렸다.
더보기
Solution
#include<stdio.h>
int main(void)
{
unsigned long long int N;
int K=64;
scanf("%llu", &N);
while(N%2==0)
{
N/=2;
K--;
}
printf("%d\n", K);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 14916번: 거스름돈 (0) | 2020.09.30 |
---|---|
<백준 알고리즘> 20004번: 베스킨라빈스 31 (0) | 2020.09.30 |
<백준 알고리즘> 2491번: 수열 (0) | 2020.09.30 |
<백준 알고리즘> 19944번: 뉴비의 기준은 뭘까? (0) | 2020.09.30 |
<백준 알고리즘> 2292번: 벌집 (0) | 2020.09.30 |