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 27Input : a = 5, b = 2, k = 2
Output : 2Explanation: 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
// 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;
} |
// 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 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# 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. |
<script> // JavaScript 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
let p = Math.pow(a, b);
let count = 0;
while (p > 0 && count < k) {
// Getting last digit
let 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 let a = 5, b = 2;
let k = 1;
document.write(kthdigit(a, b, k));
</script> |
<?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. ?> |
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.