백준15917 노솔브 방지문제야!!

문제 링크

  • http://icpc.me/15917

문제 출처

  • 제2회 천하제일 코딩대회 본선 B번

풀이

어떤 수 x가 2^k꼴의 수라고 하면, x를 이진법으로 100…0000 과 같은 형태로 나타내어집니다.
또한, x-1은 11…1111과 같은 형태가 됩니다.
두 수를 and 연산에 넣어주면 0이 나오고, x가 2^k꼴이 아니라면 0이 아닌 어떤 수가 나오게 됩니다.

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        if(n & (n-1)) cout << "0\n";
        else cout << "1\n";
    }
}