비트마스크 문제입니다.
num & * (1 << i)를 통해서 각 위치에 1이 있는지 확인합니다. (AND연산)
#include <iostream>
#include <bitset>
using namespace std;
int main(int argc, char *argv[])
{
int ts;
int num;
cin >> ts;
while (ts--) {
cin >> num;
for (int i = 0; i < 30; i++) {
if (num & (1 << i)) {
cout << i << ' ';
}
}
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 6378번 디지털 루트 (0) | 2019.09.23 |
---|---|
[C++] 백준 6679번 싱기한 네자리 숫자 (0) | 2019.09.23 |
[C++] 백준 2845번 파티가 끝나고 난 뒤 (0) | 2019.09.22 |
[C++] 백준 11506번 占쏙옙 (0) | 2019.09.22 |
[C++] 백준 10926번 ??! (0) | 2019.09.22 |