fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <bitset>
  4. #include <type_traits>
  5.  
  6. using namespace std;
  7.  
  8. template<typename Int>
  9. int pairs(Int n)
  10. {
  11. static_assert(is_integral<Int>::value && is_unsigned<Int>::value);
  12. constexpr int bits = sizeof(Int)*8;
  13. bitset<bits> b(n);
  14. int p = 0;
  15. for(int i = 1; i < bits; ++i)
  16. p += (b[i] == b[i-1]);
  17. return p;
  18. }
  19.  
  20. int main(int argc, char * argv[])
  21. {
  22. cout << pairs((unsigned int )12) << endl;
  23. cout << pairs((unsigned char)12) << endl;
  24. }
  25.  
Success #stdin #stdout 0s 5624KB
stdin
Standard input is empty
stdout
29
5