VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-unit-digit-x-raised-power-y/

⇱ Find unit digit of x raised to power y - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find unit digit of x raised to power y

Last Updated : 12 Apr, 2023

Given two numbers x and y, find unit digit of xy.

Examples : 

Input : x = 2, y = 1
Output : 2
Explanation
2^1 = 2 so units digit is 2.

Input : x = 4, y = 2
Output : 6
Explanation
4^2 = 16 so units digit is 6.

Method 1 (Simple) Compute value of xy and find its last digit. This method causes overflow for slightly larger values of x and y.
Method 2 (Efficient) 
1) Find last digit of x. 
2) Compute x^y under modulo 10 and return its value. 


Output
6

Output : 

6

Time Complexity: O(y), where y is the power
Auxiliary Space: O(1), as no extra space is required
Further Optimizations: We can compute modular power in Log y.

Method 3 (Direct based on cyclic nature of last digit) 
This method depends on the cyclicity with the last digit of x that is

x | power 2 | power 3 | power 4 | Cyclicity 
0 | .................................. | .... repeat with 0
1 | .................................. | .... repeat with 1
2 | 4 | 8 | 6 | .... repeat with 2
3 | 9 | 7 | 1 | .... repeat with 3
4 | 6 |....................... | .... repeat with 4
5 | .................................. | .... repeat with 5
6 | .................................. | .... repeat with 6
7 | 9 | 3 | 1 | .... repeat with 7
8 | 4 | 2 | 6 | .... repeat with 8
9 | 1 | ...................... | .... repeat with 9 


So here we directly mod the power y with 4 because this is the last power after this all number's repetition start 
after this we simply power with number x last digit then we get the unit digit of produced number. 


Output
3

Time Complexity: O(log n)
Auxiliary Space: O(1)

Approach: Binomial Expansion method

Here are the steps to find the unit digit of x raised to power y using the Binomial Expansion method:

1. Handle special cases:

If y is 0, return 1 as any number raised to power 0 is 1.
If x is 0, return 0 as any number raised to power 0 is 1 and the unit digit of 0 is 0.

2. Calculate the y-th term in the expansion of (x+10)^y using the binomial theorem:

The y-th term in the expansion is given by: C(y, 0)x^y10^0 + C(y, 1)*x^(y-1)*10^1 + ... + C(y, y)x^010^y
Here, C(y, k) represents the binomial coefficient, which is equal to y! / (k! * (y-k)!).
We only need to calculate the last term in this expansion, which is C(y, y)x^010^y.

3. Find the unit digit of the y-th term:

The unit digit of the y-th term is the same as the last digit of the y-th term.
We can find the last digit of the y-th term by taking the remainder of the term when divided by 10.

4. Return the unit digit found in step 3 as the result.


Output
2
6

The time complexity  is O(log y), where y is the input variable

The auxiliary space also O(1)


Thanks to DevanshuAgarwal for suggesting above solution.
How to handle large numbers? 
Efficient method for Last Digit Of a^b for Large Numbers
 

Comment
Article Tags: