VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-value-of-y-mod-2-raised-to-power-x/

⇱ Find value of y mod (2 raised to power x) - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find value of y mod (2 raised to power x)

Last Updated : 19 Apr, 2023

Given two positive integer x and y. we have to find the value of y mod 2x. That is remainder when y is divided by 2x

Examples: 

Input : x = 3, y = 14
Output : 6
Explanation : 14 % 23 = 14 % 8 = 6.

Input : x = 4, y = 14
Output : 14
Explanation : 14 % 24 = 14 % 16 = 14.

To solve this question we can use pow() and modulo operator and can easily find the remainder. 
But there are some points we should care about:  

  • For higher value of x such that 2x is greater than long long int range, we can not obtain proper result.
  • Whenever y < 2x the remainder will always be y. So, in that case we can restrict ourselves to calculate value of 2x as:
y < 2x
log y < x
// means if log y is less than x, then 
// we can print y as remainder.
  • The maximum value of 2x for which we can store 2x in a variable is 263. This means for x > 63, y is always going to be smaller than 2x and in that case remainder of y mod 2x is y itself.

keeping in mind the above points we can approach this problem as :  

if (log y < x)
 return y;
else if (x < 63)
 return y;
else 
 return (y % (pow(2, x)))

Note: As python is limit free we can directly use mod and pow() function 


Output
57

Time Complexity: O(x)
Auxiliary Space: O(1)

Approach:  Bitwise manipulation

This approach is called bitwise manipulation. Here are the steps:

  1. Calculate 2^x using the left shift operator (<<). For example, 1 << 3 will give us 8.
  2. Subtract 1 from the result of step 1 to get a binary number with x number of 1's. For example, 2^3 - 1 = 7, which in binary is 111.
  3. Perform a bitwise AND operation between y and the result of step 2. The result will be the remainder when y is divided by 2^x.

Output
The remainder of 14 when divided by 2^3 is 6.
The remainder of 14 when divided by 2^4 is 14.

The time complexity:  O(1) 
The auxiliary space: O(1)
 

Compute modulus division by a power-of-2-number
 

Comment
Article Tags: