该程序检查是否可以将数字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。
底数3中的20是(202) 3 。由于有两个非零数字,因此20不能表示为3的幂。
C++
// CPP program to check if a number can be
// raised to k
#include
#include
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.
Python3
# 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.
PHP
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
?>
输出:
Yes