Problem Solving/BOJ

[백준 / BOJ] C++ 11966 2의 제곱인가?

nageune 2023. 5. 9. 01:59
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
반응형