13
13
* - If (N & 1) == 0, N is even.
14
14
* - If (N & 1) == 1, N is odd.
15
15
*
16
+ * Example:
17
+ * Consider 8-bit binary representations of two numbers:
18
+ * Number: 10 (decimal) -> 00001010 (binary)
19
+ * LSB = 0 -> Even number
20
+ *
21
+ * Number: 13 (decimal) -> 00001101 (binary)
22
+ * LSB = 1 -> Odd number
23
+ *
24
+ * In both cases, evaluating (N & 1) isolates the LSB:
25
+ * - For 10: 00001010 & 00000001 = 0 (Even)
26
+ * - For 13: 00001101 & 00000001 = 1 (Odd)
27
+ *
16
28
* Worst Case Time Complexity: O(1)
17
29
* Space Complexity: O(1)
18
30
*
@@ -41,7 +53,7 @@ namespace even_odd {
41
53
* @returns "Even" if N is even, "Odd" if N is odd.
42
54
*/
43
55
std::string is_even (std::int64_t N) {
44
- return (N & 1 ) == 0 ;
56
+ return (N & 1 ) == 0 ? " Even " : " Odd " ;
45
57
}
46
58
47
59
} // namespace even_odd
@@ -52,21 +64,21 @@ namespace even_odd {
52
64
* @returns void
53
65
*/
54
66
static void test () {
55
- using bit_manipulation::even_odd::checkEvenOdd ;
67
+ using bit_manipulation::even_odd::is_even ;
56
68
57
69
// Test Even numbers
58
- assert (checkEvenOdd (0 ) == " Even" );
59
- assert (checkEvenOdd (2 ) == " Even" );
60
- assert (checkEvenOdd (100 ) == " Even" );
61
- assert (checkEvenOdd (-4 ) == " Even" );
62
- assert (checkEvenOdd (-1000 ) == " Even" );
70
+ assert (is_even (0 ) == " Even" );
71
+ assert (is_even (2 ) == " Even" );
72
+ assert (is_even (100 ) == " Even" );
73
+ assert (is_even (-4 ) == " Even" );
74
+ assert (is_even (-1000 ) == " Even" );
63
75
64
76
// Test Odd numbers
65
- assert (checkEvenOdd (1 ) == " Odd" );
66
- assert (checkEvenOdd (3 ) == " Odd" );
67
- assert (checkEvenOdd (101 ) == " Odd" );
68
- assert (checkEvenOdd (-5 ) == " Odd" );
69
- assert (checkEvenOdd (-999 ) == " Odd" );
77
+ assert (is_even (1 ) == " Odd" );
78
+ assert (is_even (3 ) == " Odd" );
79
+ assert (is_even (101 ) == " Odd" );
80
+ assert (is_even (-5 ) == " Odd" );
81
+ assert (is_even (-999 ) == " Odd" );
70
82
71
83
std::cout << " All test cases successfully passed!" << std::endl;
72
84
}
0 commit comments