📌  相关文章
📜  Python3程序检查是否所有数组元素都可以通过旋转数字转换为普罗尼克数

📅  最后修改于: 2022-05-13 01:55:30.108000             🧑  作者: Mango

Python3程序检查是否所有数组元素都可以通过旋转数字转换为普罗尼克数

给定一个大小为N的数组arr[] ,任务是检查是否可以通过任意次数旋转数组元素的数字来将所有数组元素转换为普罗尼克数。

例子:

解决方法:按照以下步骤解决问题:

  • 遍历数组并检查每个数组元素,是否可以将其转换为普罗尼克数。
  • 对于每个数组元素,应用所有可能的旋转并在每次旋转后检查生成的数字是否为 pronic。
  • 如果无法将任何数组元素转换为普罗尼克数,请打印“False”
  • 否则,打印“True”

下面是上述方法的实现:

Python3
# Python implementation of
# the above approach
  
# Function to check if a number
# is a pronic number or not
def isPronic(n):
  
  for i in range(int(n**(1 / 2)) + 1):
    if i * (i + 1) == n:
      return True
  
  return False
  
# Function to check if any permutation
# of n is a pronic number or not
def checkRot(n):
  
  temp = str(n)
  
  for i in range(len(temp)):
  
    if isPronic(int(temp)):
      return True
  
    temp = temp[1:]+temp[0]
  
  return False
  
# Function to check if all array
# elements can be converted to
# a pronic number or not
def check(arr):
  
  # Traverse the array
  for i in arr:
  
    # If current element
    # cannot be converted 
    # to a pronic number
    if not checkRot(i):
      return False
  return True
  
# Driver Code
arr = [ 321, 402, 246, 299 ]
print(check(arr))


输出:
True

时间复杂度: O(N 3/2 )
辅助空间: O(1)

有关详细信息,请参阅有关检查所有数组元素是否可以通过旋转数字转换为普罗尼克数的完整文章!