728x90
반응형
11966번: 2의 제곱인가?
문제
https://www.acmicpc.net/problem/11966
11966번: 2의 제곱인가?
자연수 N이 주어졌을 때, 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
풀이
2의 제곱수면 log2를 씌웠을 때 정수가 나올 것이다. 따라서 log2(n)이 정수이면 1, 아니면 0을 출력하면 된다. log2의 return 값은 double 형태이다. 원래 수에서 int로 형변환한 값을 뺀 값이 0이면 log2(n)은 정수이다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
cout << (log2(n) - (int)log2(n) == 0);
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 10988 팰린드롬인지 확인하기 (0) | 2023.05.15 |
---|---|
[백준 / BOJ] C++ 15786 Send me the money (2) | 2023.05.15 |
[백준 / BOJ] C++ 16507 어두운 건 무서워 (2) | 2023.05.08 |
[백준 / BOJ] C++ 28014 첨탑 밀어서 부수기 (0) | 2023.05.08 |
[백준 / BOJ] C++ 2583 영역 구하기 (8) | 2023.05.06 |