K-th digit in ‘a’ raised to power ‘b’

Given three numbers a, b and k, find k-th digit in ab from right side

Examples:

Input : a = 3, b = 3, 
        k = 1
Output : 7
Explanation
3^3 = 27 for k = 1. First digit is 7 in 27

Input : a = 5, b = 2, 
        k = 2
Output : 2
Explanation
5^2 = 25 for k = 2. First digit is 2 in 25


Method
1) Compute a^b
2) Iteratively remove the last digit until k-th digit is not meet

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program for finding k-th digit in a^b
#include <bits/stdc++.h>
using namespace std;
  
// To compute k-th digit in a^b
int kthdigit(int a, int b, int k)
{
    // computing a^b
    int p = pow(a, b);
  
    int count = 0;
    while (p > 0 && count < k) {
  
        // getting last digit
        int rem = p % 10;
  
        // increasing count by 1
        count++;
  
        // if current number is required digit
        if (count == k)
            return rem;
  
        // remove last digit
        p = p / 10;
    }
  
    return 0;
}
  
// Driver code
int main()
{
    int a = 5, b = 2;
    int k = 1;
    cout << kthdigit(a, b, k);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for finding k-th digit in a^b
import java.util.*;
import java.lang.*;
  
public class GfG {
    // To compute k-th digit in a^b
    public static int kthdigit(int a, int b, int k)
    {
        // Computing a^b
        int p = (int)Math.pow(a, b);
  
        int count = 0;
        while (p > 0 && count < k) {
  
            // Getting last digit
            int rem = p % 10;
  
            // Increasing count by 1
            count++;
  
            // If current number is required digit
            if (count == k)
                return rem;
  
            // Remove last digit
            p = p / 10;
        }
  
        return 0;
    }
      
    // Driver Code 
    public static void main(String argc[]) {
        int a = 5, b = 2;
        int k = 1;
        System.out.println(kthdigit(a, b, k));
    }
      
}
  
// This code is contributed by Sagar Shukla.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to compute k-th 
# digit in a^b
def kthdigit(a, b, k):
      
    # computin a^b in python
    p = a ** b
    count = 0
      
    while (p > 0 and count < k):
          
        # getting last digit
        rem = p % 10
  
        # increasing count by 1
        count = count + 1
  
        # if current number is 
        # required digit
        if (count == k):
            return rem
  
        # remove last digit
        p = p / 10;
      
# driver code    
a = 5
b = 2
k = 1
ans = kthdigit(a, b, k)
print (ans)
  
# This code is contributed by Saloni Gupta

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for finding k-th digit in a^b
using System;
  
public class GfG {
      
    // To compute k-th digit in a^b
    public static int kthdigit(int a, int b, int k)
    {
        // Computing a^b
        int p = (int)Math.Pow(a, b);
  
        int count = 0;
        while (p > 0 && count < k) {
  
            // Getting last digit
            int rem = p % 10;
  
            // Increasing count by 1
            count++;
  
            // If current number is required digit
            if (count == k)
                return rem;
  
            // Remove last digit
            p = p / 10;
        }
  
        return 0;
    }
      
    // Driver Code 
    public static void Main() {
        int a = 5, b = 2;
        int k = 1;
        Console.WriteLine(kthdigit(a, b, k));
    }
      
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program for finding 
// k-th digit in a^b
  
// To compute k-th 
// digit in a^b
function kthdigit($a, $b, $k)
{
      
    // computing a^b
    $p = pow($a, $b);
  
    $count = 0;
    while ($p > 0 and $count < $k)
    {
  
        // getting last digit
        $rem = $p % 10;
  
        // increasing count by 1
        $count++;
  
        // if current number is
        // required digit
        if ($count == $k)
            return $rem;
  
        // remove last digit
        $p = $p / 10;
    }
  
    return 0;
}
  
    // Driver Code
    $a = 5;
    $b = 2;
    $k = 1;
    echo kthdigit($a, $b, $k);
  
// This code is contributed by anuj_67.
?>

chevron_right



Output:

5

How to avoid overflow?
We can find power under modulo 10sup>k to avoid overflow. After finding the power under modulo, we need to return first digit of the power.



My Personal Notes arrow_drop_up


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 : vt_m