算法競賽進階指南--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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章