📜  检查给定编号是否可以用给定编号表示。任何基数的位数

📅  最后修改于: 2021-04-26 07:54:22             🧑  作者: Mango

给出一个数字,没有。代表数字,查找给定数字是否可以用给定编号表示。以2到32之间的任何底数表示的数字。
例子 :

Input: 8 4  
Output: Yes
Possible in base 2 as 8 in base 2 is 1000

Input: 8 2 
Output: Yes 
Possible in base 3 as 8 in base 3 is 22

Input: 8 3  
Output: No
Not possible in any base

强烈建议您最小化浏览器,然后自己尝试。
这个想法是从底数2到底数32逐一检查所有底数。我们如何检查给定的底数?以下是简单的步骤。
1)如果数字小于基数且数字为1,则返回true。
2)否则,如果digit大于1并且number大于base,则通过执行num / base来从num中删除最后一位,减少位数并重复执行。
3)否则返回false
以下是上述想法的实现。

C++
// C++ program to check if a given number can be
// represented in given number of digits in any base
#include 
using namespace std;
 
// Returns true if 'num' can be represented usind 'dig'
// digits in 'base'
bool checkUtil(int num, int dig, int base)
{
    // Base case
    if (dig==1 && num < base)
       return true;
 
    // If there are more than 1 digits left and number
    // is more than base, then remove last digit by doing
    // num/base, reduce the number of digits and recur
    if (dig > 1 && num >= base)
       return checkUtil(num/base, --dig, base);
 
    return false;
}
 
// return true of num can be represented in 'dig'
// digits in any base from 2 to 32
bool check(int num, int dig)
{
    // Check for all bases one by one
    for (int base=2; base<=32; base++)
       if (checkUtil(num, dig, base))
            return true;
    return false;
}
 
// Driver program
int main()
{
    int num = 8;
    int dig = 3;
    (check(num, dig))? cout << "Yes" : cout << "No";
    return 0;
}


Java
// Java program to check if a
// given number can be represented
// in given number of digits in any base
class GFG
{
    // Returns true if 'num' can be
    // represented usind 'dig' digits in 'base'
    static boolean checkUtil(int num, int dig, int base)
    {
        // Base case
        if (dig==1 && num < base)
        return true;
     
        // If there are more than 1 digits
        // left and number is more than base,
        // then remove last digit by doing num/base,
        //  reduce the number of digits and recur
        if (dig > 1 && num >= base)
        return checkUtil(num / base, --dig, base);
     
        return false;
    }
     
    // return true of num can be
    // represented in 'dig' digits
    // in any base from 2 to 32
    static boolean check(int num, int dig)
    {
        // Check for all bases one by one
        for (int base = 2; base <= 32; base++)
        if (checkUtil(num, dig, base))
                return true;
        return false;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int num = 8;
        int dig = 3;
        if(check(num, dig))
            System.out.print("Yes");
        else
            System.out.print("No");
    }
}
 
// This code is contributed by Anant Agarwal.


Python3
# Python program to check
# if a given number can be
# represented in given number
# of digits in any base
 
# Returns true if 'num' can
# be represented using 'dig'
# digits in 'base'
def checkUtil(num,dig,base):
     
    # Base case
    if (dig==1 and num < base):
        return True
  
    # If there are more than 1
    # digits left and number
    # is more than base, then
    # remove last digit by doing
    # num/base, reduce the number
    # of digits and recur
    if (dig > 1 and num >= base):
        return checkUtil(num/base, --dig, base)
  
    return False
  
# return true of num can
# be represented in 'dig'
# digits in any base from 2 to 32
def check(num,dig):
 
    # Check for all bases one by one
    for base in range(2,33):
 
        if (checkUtil(num, dig, base)):
            return True
    return False
 
# driver code
num = 8
dig = 3
if(check(num, dig)==True):
    print("Yes")
else:
    print("No")
 
# This code is contributed
# by Anant Agarwal.


C#
// C# program to check if a given
// number can be represented in
// given number of digits in any base
using System;
 
class GFG {
     
    // Returns true if 'num' can be
    // represented usind 'dig' digits
    // in 'base'
    static bool checkUtil(int num, int dig,
                          int i)
    {
         
        // Base case
        if (dig == 1 && num < i)
        return true;
     
        // If there are more than 1 digits
        // left and number is more than base,
        // then remove last digit by doing
        // num/base, reduce the number of
        // digits and recur
        if (dig > 1 && num >= i)
        return checkUtil((num / i), --dig, i);
     
        return false;
    }
     
    // return true of num can be
    // represented in 'dig' digits
    // in any base from 2 to 32
    static bool check(int num, int dig)
    {
         
        // Check for all bases one by one
        for (int i = 2; i <= 32; i++)
        if (checkUtil(num, dig, i))
                return true;
        return false;
    }
     
    // Driver code
    public static void Main()
    {
        int num = 8;
        int dig = 3;
        if(check(num, dig))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by Sam007.


PHP
 1 && $num >= $base)
    return checkUtil($num / $base,
                   --$dig, $base);
 
    return false;
}
 
// return true of num can be
// represented in 'dig' digits
// in any base from 2 to 32
function check($num, $dig)
{
    // Check for all bases one by one
    for ($base = 2; $base <= 32; $base++)
    if (checkUtil($num, $dig, $base))
            return true;
    return false;
}
 
// Driver Code
$num = 8;
$dig = 3;
if (check($num, $dig) == true)
echo "Yes" ;
else
echo "No";
 
// This code is contributed by ajit
?>


Javascript


输出 :

No