문제 링크: https://www.acmicpc.net/problem/3460

 

n의 맨 오른쪽에 있는 1을 찾으려면 n & -n을 하면 되죠. 펜윅트리 만들 때 자주 썼던 식입니다.

간단하게 짜봤습니다.

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);

	int t;
	cin >> t;
	while (t--) {
		int n;
		cin >> n;

		while (n) {
			cout << log2(n & -n) << ' ';
			n &= ~(n & -n);
		}
	}

	return 0;
}
반응형