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 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
C++
// 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
// 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
<?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. ?> |
Javascript
<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> |
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.
Please Login to comment...