# 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

Recommended Practice

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

## C++

 `// CPP program for finding k-th digit in a^b` `#include ` `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;` `}`

## Java

 `// 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.`

## Python3

 `# Python3 code to compute k-th ` `# digit in a^b` `def` `kthdigit(a, b, k):` `    `  `    ``# computing 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`

## C#

 `// 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.`

## PHP

 ` 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.` `?>`

## Javascript

 ``

Output:

`5`

Time Complexity: O(log p)
Auxiliary Space: O(1)
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.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!