a 中的第 K 位数字升至 b 的幂
给定三个数字 a、b 和 k,从右侧找到 a b 中的第 k 个数字 示例:
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
方法 1)计算 a^b 2)迭代去除最后一个数字,直到第 k 个数字不满足
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.
Python 3
# 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.
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?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.
?>
java 描述语言
<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>
输出:
5
如何避免溢出? 我们可以在模下找到的力量 10sup > k 避免溢出。求模下的幂之后,我们需要返回幂的第一个数字。
版权属于:月萌API www.moonapi.com,转载请注明出处