fork(1) download
  1. /*
  2.   ANOTHER METHOD:
  3.   int set_bit=0;
  4.   total_set_bits(int n)
  5.   now checking if n>1
  6.   if yes
  7.   set_bit++;
  8.   n=n-(max multiple of 2 which is less than or equal to n);
  9.   checking if (n)//if n was not a proper multiple of 2
  10.   if yes
  11.   total_set_bits(n); // recursive call
  12.   else
  13.   return;
  14.   */
  15. #include <iostream>
  16. #include<cmath>
  17. using namespace std;
  18. int SET_BIT=0;
  19.  
  20. void total(int n)
  21. {
  22. if(n==1)
  23. {
  24. SET_BIT++;
  25. return;
  26. }
  27. if(n/2)
  28. SET_BIT++;
  29.  
  30. int Pow=log2(n);
  31. n-=pow(2,Pow);
  32.  
  33. if(n)
  34. total(n);
  35. //ELSE
  36. return;
  37. }
  38. int main() {
  39. // your code goes here
  40. int n;
  41. for(int i=0;i<40;i++)
  42. {
  43. total(i);
  44. cout<<"num : "<<i<<" : set bit: "<<SET_BIT<<endl;
  45. SET_BIT=0;
  46. }
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
num : 0 : set bit: 0
num : 1 : set bit: 1
num : 2 : set bit: 1
num : 3 : set bit: 2
num : 4 : set bit: 1
num : 5 : set bit: 2
num : 6 : set bit: 2
num : 7 : set bit: 3
num : 8 : set bit: 1
num : 9 : set bit: 2
num : 10 : set bit: 2
num : 11 : set bit: 3
num : 12 : set bit: 2
num : 13 : set bit: 3
num : 14 : set bit: 3
num : 15 : set bit: 4
num : 16 : set bit: 1
num : 17 : set bit: 2
num : 18 : set bit: 2
num : 19 : set bit: 3
num : 20 : set bit: 2
num : 21 : set bit: 3
num : 22 : set bit: 3
num : 23 : set bit: 4
num : 24 : set bit: 2
num : 25 : set bit: 3
num : 26 : set bit: 3
num : 27 : set bit: 4
num : 28 : set bit: 3
num : 29 : set bit: 4
num : 30 : set bit: 4
num : 31 : set bit: 5
num : 32 : set bit: 1
num : 33 : set bit: 2
num : 34 : set bit: 2
num : 35 : set bit: 3
num : 36 : set bit: 2
num : 37 : set bit: 3
num : 38 : set bit: 3
num : 39 : set bit: 4