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

• Difficulty Level : Easy
• Last Updated : 22 Dec, 2022

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.

My Personal Notes arrow_drop_up