# 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: Please try your approach on {IDE} first, before moving on to the solution.

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): ` `     `  `    ``# 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 `

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

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

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.