Check if all array elements can be converted to pronic numbers by rotating digits

Check if all array elements can be converted to pronic numbers by rotating digits
Given an array arr[] of size N, the task is to check if it is possible to convert all of array elements to a pronic number by rotating the digits of array elements any number of times.
Examples:

Input: {321, 402, 246, 299} Output: TrueExplanation:arr[0] → Right rotation once modifes arr[0] to 132 (= 11 × 12).arr[1] → Right rotation once modifes arr[0] to 240 (= 15 × 16).arr[2] → Right rotation twice modifies arr[2] to 462 (= 21 × 22).arr[3] → Right rotation twice modifies arr[3] to 992 (= 31 × 32).
Input: {433, 653, 402, 186}Output: False

Approach: Follow the steps below to solve the problem:Traverse the array and check for each array element, whether it is possible to convert it to a pronic number.
For each array element, apply all the possible rotations and check after each rotation, whether the generated number is pronic or not.
If it is not possible to convert any array element to a pronic number, print “False”.
Otherwise, print “True”.
Below is the implementation of the above approach:

Python3

  

def isPronic(n):
  
  for i in range(int(n**(1 / 2)) + 1):
    if i * (i + 1) == n:
      return True
  
  return False
  

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
  

def check(arr):
  
  
  for i in arr:
  
    
    
    
    if not checkRot(i):
      return False
  return True
  

arr = [ 321, 402, 246, 299 ]
print(check(arr))

Output:

True

Time Complexity: O(N3/2)Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.