Find unit digit of x raised to power y

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.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient C++ program to
// find unit digit of x^y.
#include <bits/stdc++.h>
using namespace std;
  
// Returns unit digit of x
// raised to power y
int unitDigitXRaisedY(int x, int y)
{
    // Initialize result as 1 to
    // handle case when y is 0.
    int res = 1;
  
    // One by one multiply with x
    // mod 10 to avoid overflow.
    for (int i = 0; i < y; i++)
        res = (res * x) % 10;
  
    return res;
}
  
// Driver program
int main()
{  
   cout << unitDigitXRaisedY(4, 2);
   return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient Java program to find 
// unit digit of x^y.
import java.io.*;
  
class GFG {
    // Returns unit digit of x raised to power y
    static int unitDigitXRaisedY(int x, int y)
    {
        // Initialize result as 1 to
        // handle case when y is 0.
        int res = 1;
      
        // One by one multiply with x
        // mod 10 to avoid overflow.
        for (int i = 0; i < y; i++)
            res = (res * x) % 10;
      
        return res;
    }
      
    // Driver program
    public static void main(String args[])throws IOException
    
    System.out.println(unitDigitXRaisedY(4, 2));
    }
}
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to find
# unit digit of x^y.
  
# Returns unit digit of
# x raised to power y
def unitDigitXRaisedY( x , y ):
  
    # Initialize result as 1 to
    # handle case when y is 0.
    res = 1
      
    # One by one multiply with x
    # mod 10 to avoid overflow.
    for i in range(y):
        res = (res * x) % 10
      
    return res
      
# Driver program
print( unitDigitXRaisedY(4, 2))
  
  
# This code is contributed by Abhishek Sharma44.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient Java program to find 
// unit digit of x^y.
using System;
  
class GFG 
{
    // Returns unit digit of x raised to power y
    static int unitDigitXRaisedY(int x, int y)
    {
        // Initialize result as 1 to
        // handle case when y is 0.
        int res = 1;
      
        // One by one multiply with x
        // mod 10 to avoid overflow.
        for (int i = 0; i < y; i++)
            res = (res * x) % 10;
      
        return res;
    }
      
    // Driver program
    public static void Main()
    
    Console.WriteLine(unitDigitXRaisedY(4, 2));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Efficient PHP program to
// find unit digit of x^y.
  
// Returns unit digit of x
// raised to power y
function unitDigitXRaisedY($x, $y)
{
    // Initialize result as 1 to
    // handle case when y is 0.
    $res = 1;
  
    // One by one multiply with x
    // mod 10 to avoid overflow.
    for ($i = 0; $i < $y; $i++)
        $res = ($res * $x) % 10;
  
    return $res;
}
  
// Driver Code
echo(unitDigitXRaisedY(4, 2));
  
// This code is contributed by Ajit.
?>

chevron_right



Output :

6

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.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP code to find the unit digit of x 
// raised to power y.
#include<iostream>
#include<math.h>
using namespace std;
  
// find unit digit
int unitnumber(int x, int y)
{
    // Get last digit of x
    x = x % 10;
        
    // Last cyclic modular value
    if(y!=0)
        y = y % 4 + 4;
  
    // here we simply return the 
    // unit digit or the power 
    // of a number
    return (((int)(pow(x, y))) % 10);
}
  
int main()
{
    int x = 133, y = 5;
      
    // get unit digit number here we pass 
    // the unit  digit of x and the last 
    // cyclicity number that is y%4
    cout << unitnumber(x, y);
   
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to find the unit 
// digit of x  raised to power y.
import java.io.*;
import java.util.*;
  
class GFG {
      
    // find unit digit
    static int unitnumber(int x, int y)
    {
        // Get last digit of x
        x = x % 10;
              
        // Last cyclic modular value
        if(y!=0)
             y = y % 4 + 4;
      
        // here we simply return the 
        // unit digit or the power 
        // of a number
        return (((int)(Math.pow(x, y))) % 10);
    }
      
      
    public static void main (String[] args)
    {
        int x = 133, y = 5;
      
        // get unit digit number here we pass 
        // the unit digit of x and the last 
        // cyclicity number that is y%4
        System.out.println(unitnumber(x, y)); 
      
    }
}
  
// This code is contributed by Gitanjali.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to find the unit   
# digit of x raised to power y.
import math
  
# Find unit digit
def unitnumber(x, y):
  
    # Get last digit of x
    x = x % 10
          
    # Last cyclic modular value
    if y!=0:
         y = y % 4 + 4
  
    # Here we simply return  
    # the unit digit or the  
    # power of a number
    return (((int)(math.pow(x, y))) % 10)
  
  
# Driver code 
x = 133; y = 5
      
# Get unit digit number here we pass 
# the unit digit of x and the last 
# cyclicity number that is y%4
print(unitnumber(x, y))
  
  
# This code is contributed by Gitanjali.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to find the unit 
// digit of x raised to power y.
using System;
  
class GFG {
      
    // find unit digit
    static int unitnumber(int x, int y)
    {
        // Get last digit of x
        x = x % 10;
              
        // Last cyclic modular value
        if(y!=0)
             y = y % 4 + 4;
      
        // here we simply return the 
        // unit digit or the power 
        // of a number
        return (((int)(Math.Pow(x, y))) % 10);
    }
      
    // Driver code
    public static void Main ()
    {
        int x = 133, y = 5;
      
        // get unit digit number here we pass 
        // the unit digit of x and the last 
        // cyclicity number that is y%4
        Console.WriteLine(unitnumber(x, y)); 
      
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to find the unit 
// digit of x raised to power y.
  
// find unit digit
function unitnumber($x, $y)
{
    // Get last digit of x
    $x = $x % 10;
      
    // Last cyclic modular value
    if($y!=0)
        $y = $y % 4 + 4;
  
    // here we simply return the 
    // unit digit or the power 
    // of a number
    return (((int)(pow($x, $y))) % 10);
}
  
// Driver code
$x = 133; $y = 5;
      
// get unit digit number here we pass 
// the unit digit of x and the last 
// cyclicity number that is y%4
echo(unitnumber($x, $y));
  
// This code is contributed by Ajit.
?>

chevron_right



Output :

3

Thanks to DevanshuAgarwal for suggesting above solution.


How to handle large numbers?

Efficient method for Last Digit Of a^b for Large Numbers



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : jit_t, Gowtham Yuvaraj