算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位

// lowbit运算,找到二进制下所有是1的位
int H[37];
// 预处理
for (int i = 0; i < 36; i++) H[(1ll << i) % 37] = i;
// 对多次询问进行求解
while (cin >> n) {
	while (n > 0) {
		cout << H[(n & -n) % 37] << ' ';
		n -= n & -n;
	}
	cout << endl;
}
posted @ 2020-04-14 10:48  风骨散人  阅读(134)  评论(0编辑  收藏  举报