给出一个数字,没有。代表数字,查找给定数字是否可以用给定编号表示。以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