문제) 백준 - 수학(Mathematics) - 노솔브 방지문제야!!
15917번: 노솔브 방지문제야!!
어떤 수 a가 2의 거듭제곱꼴로 나타내어진다고 해 봅시다. 그렇다면, a = 2n (단 n ≥ 0인 정수) 를 만족할 겁니다. 보통, 각 비트별로 검사를 하면서, 켜져 있는 비트의 개수를 알아내는 것도 좋은
www.acmicpc.net
완전 탐색을 이용한 풀이)
#include <iostream>
#include <algorithm>
using namespace std;
int q;
bool isTwo(int n) {
for (int i = 0; i < 31; ++i) {
if (pow(2, i) == n) return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> q;
for (int i = 0; i < q; ++i) {
int a;
cin >> a;
if (isTwo(a)) cout << 1<< "\n";
else cout << 0 << "\n";
}
return 0;
}
비트 연산을 이용한 풀이)
#include <iostream>
#include <algorithm>
using namespace std;
int q;
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> q;
for (int i = 0; i < q; ++i) {
int a;
cin >> a;
if ((a & (-a)) == a) cout << 1<< "\n";
else cout << 0 << "\n";
}
return 0;
}
반응형
'PS(Problem Solving) > 백준_BOJ' 카테고리의 다른 글
[백준] 1005번 - ACM Craft (파이썬) 문제 및 풀이 (0) | 2021.03.30 |
---|---|
[백준] 9251번 - LCS (파이썬) (0) | 2021.03.29 |
[백준] 2798번 - 블랙잭 (C++/파이썬) 문제 및 풀이 (0) | 2021.03.18 |
[백준] 2231번 - 분해합 (C++/파이썬) 문제 및 풀이 (0) | 2021.03.18 |
[백준] 1707번 - 이분 그래프 (파이썬) 문제 및 풀이 (0) | 2021.03.12 |
댓글