用基数变化法
检查一个数是否为 k 的幂
原文:https://www . geesforgeks . org/check-number-power-k-use-base-changing-method/
这个程序检查一个数 n 是否可以表示为 k 的幂,如果可以,那么 k 应该升到什么幂才能成为 n。下面的例子将阐明: 例子:
Input : n = 16, k = 2
Output : yes : 4
Explanation : Answer is yes because 16 can
be expressed as power of 2\.
Input : n = 27, k = 3
Output : yes : 3
Explanation : Answer is yes as 27 can be
expressed as power of 3.
Input : n = 20, k = 5
Output : No
Explanation : Answer is No as 20 cannot
be expressed as power of 5\.
我们在下面的帖子 中讨论了两种方法:检查一个数是否是另一个数的幂 在这篇帖子中,讨论了一种新的基数变化方法。 在基数变化法中,我们简单的把数字 n 的基数改为 k,检查变化数的第一位数字是否为 1,其余全部为零。 这个例子:我们取 n = 16,k = 2。 将 16 改为基数 2。即(10000) 2 。因为第一个数字是 1,其余的是零。因此 16 可以表示为 2 的幂。数一数(10000) 2 的长度,然后减去 1,那就是 2 必须加到的数,等于 16。在这种情况下,5–1 = 4。 再举一个例子:我们取 n = 20,k = 3。 20 在基数 3 是(202) 3 。由于有两个非零数字,因此 20 不能表示为 3 的幂。
C++
// CPP program to check if a number can be
// raised to k
#include <iostream>
#include <algorithm>
using namespace std;
bool isPowerOfK(unsigned int n, unsigned int k)
{
// loop to change base n to base = k
bool oneSeen = false;
while (n > 0) {
// Find current digit in base k
int digit = n % k;
// If digit is neither 0 nor 1
if (digit > 1)
return false;
// Make sure that only one 1
// is present.
if (digit == 1)
{
if (oneSeen)
return false;
oneSeen = true;
}
n /= k;
}
return true;
}
// Driver code
int main()
{
int n = 64, k = 4;
if (isPowerOfK(n ,k))
cout << "Yes";
else
cout << "No";
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to check if a number can be
// raised to k
class GFG
{
static boolean isPowerOfK(int n,int k)
{
// loop to change base n to base = k
boolean oneSeen = false;
while (n > 0)
{
// Find current digit in base k
int digit = n % k;
// If digit is neither 0 nor 1
if (digit > 1)
return false;
// Make sure that only one 1
// is present.
if (digit == 1)
{
if (oneSeen)
return false;
oneSeen = true;
}
n /= k;
}
return true;
}
// Driver code
public static void main (String[] args)
{
int n = 64, k = 4;
if (isPowerOfK(n ,k))
System.out.print("Yes");
else
System.out.print("No");
}
}
// This code is contributed by Anant Agarwal.
Python 3
# Python program to
# check if a number can be
# raised to k
def isPowerOfK(n, k):
# loop to change base
# n to base = k
oneSeen = False
while (n > 0):
# Find current digit in base k
digit = n % k
# If digit is neither 0 nor 1
if (digit > 1):
return False
# Make sure that only one 1
# is present.
if (digit == 1):
if (oneSeen):
return False
oneSeen = True
n //= k
return True
# Driver code
n = 64
k = 4
if (isPowerOfK(n , k)):
print("Yes")
else:
print("No")
# This code is contributed
# by Anant Agarwal.
C
// C# program to check if a number can be
// raised to k
using System;
class GFG {
static bool isPowerOfK(int n, int k)
{
// loop to change base n to base = k
bool oneSeen = false;
while (n > 0)
{
// Find current digit in base k
int digit = n % k;
// If digit is neither 0 nor 1
if (digit > 1)
return false;
// Make sure that only one 1
// is present.
if (digit == 1)
{
if (oneSeen)
return false;
oneSeen = true;
}
n /= k;
}
return true;
}
// Driver code
public static void Main ()
{
int n = 64, k = 4;
if (isPowerOfK(n ,k))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by vt_m.
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to check
// if a number can be
// raised to k
function isPowerOfK($n, $k)
{
// loop to change base
// n to base = k
$oneSeen = false;
while ($n > 0)
{
// Find current
// digit in base k
$digit = $n % $k;
// If digit is
// neither 0 nor 1
if ($digit > 1)
return false;
// Make sure that
// only one 1
// is present.
if ($digit == 1)
{
if ($oneSeen)
return false;
$oneSeen = true;
}
$n = (int)$n / $k;
}
return true;
}
// Driver code
$n = 64;
$k = 4;
if (isPowerOfK($n, $k))
echo "Yes";
else
echo "No";
// This code is contributed
// by ajit
?>
java 描述语言
<script>
// JavaScript program to check if a number can be
// raised to k
function isPowerOfK(n,k)
{
// loop to change base n to base = k
let oneSeen = false;
while (n > 0)
{
// Find current digit in base k
let digit = n % k;
// If digit is neither 0 nor 1
if (digit > 1)
return false;
// Make sure that only one 1
// is present.
if (digit == 1)
{
if (oneSeen)
return false;
oneSeen = true;
}
n = Math.floor(n / k);
}
return true;
}
// Driver Code
let n = 64, k = 4;
if (isPowerOfK(n ,k))
document.write("Yes");
else
document.write("No");
</script>
输出:
Yes
本文由舒巴姆拉纳供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处