📌  相关文章
📜  使用基数更改方法检查数字是否为k的幂

📅  最后修改于: 2021-05-04 16:21:40             🧑  作者: Mango

该程序检查是否可以将数字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