This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub noshi91/Library
#pragma once #include "other/int_alias.cpp" usize popcount(u64 x) { #ifdef __GNUC__ return __builtin_popcountll(x); #else x -= x >> 1 & 0x5555555555555555; x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333); x = x + (x >> 4) & 0x0F0F0F0F0F0F0F0F; return x * 0x0101010101010101 >> 56 & 0x7f; #endif }
#line 2 "other/popcount.cpp" #line 2 "other/int_alias.cpp" #include <cstddef> #include <cstdint> using i32 = std::int32_t; using i64 = std::int64_t; using u32 = std::uint32_t; using u64 = std::uint64_t; using isize = std::ptrdiff_t; using usize = std::size_t; #line 4 "other/popcount.cpp" usize popcount(u64 x) { #ifdef __GNUC__ return __builtin_popcountll(x); #else x -= x >> 1 & 0x5555555555555555; x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333); x = x + (x >> 4) & 0x0F0F0F0F0F0F0F0F; return x * 0x0101010101010101 >> 56 & 0x7f; #endif }