diff --git a/algorithms/CPlusPlus/Maths/power-of-two.cpp b/algorithms/CPlusPlus/Maths/power-of-two.cpp index d5218d60..4a290b41 100644 --- a/algorithms/CPlusPlus/Maths/power-of-two.cpp +++ b/algorithms/CPlusPlus/Maths/power-of-two.cpp @@ -1,27 +1,37 @@ #include using namespace std; -//function starts -bool isPowerOfTwo(const n) +// function starts +bool isPowerOfTwo(const int n) { - //declare a variable to know if n is a power of 2 or not + // declare a variable to know if n is a power of 2 or not long i = 1; - //at every iteration it will calcalute power of 2 starting from 1 + // at every iteration it will calcalute power of 2 starting from 1 while (i < n) { i = i * 2; } - //if n is the power of 2, i and n value will be same - //if they are same, it will return true, else it will return false + // if n is the power of 2, i and n value will be same + // if they are same, it will return true, else it will return false return i == n; } -//main starts +// Binary Method to check number is in power of two or not. +// Time Complexity of this method is O(1) +bool ispoweroftwo(const int n) +{ + // if number is in power of two it will give 0, otherwise it will not zero. + return n != 0 && (n & (n - 1)) == 0; +} + +// main starts int main() { int n; cin >> n; - cout << isPowerOfTwo(n); + cout << isPowerOfTwo(n) << endl; + // Check using Binary Method + cout << ispoweroftwo(n) << endl; return 0; } @@ -29,13 +39,15 @@ int main() Example 1: Input: n = 1 -Output:1 (true) -Explanation: 20 = 1 +Output:1 (true) +Explanation: 2^0 = 1 + Example 2: Input: n = 16 -Output:1 (true) -Explanation: 24 = 16 +Output:1 (true) +Explanation: 2^4 = 16 + Example 3: Input: n = 3