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

Last Updated : 27 Jan, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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

Examples:

Input: {321, 402, 246, 299} 
Output: True 
Explanation: 
arr[0] ? Right rotation once modifies arr[0] to 132 (= 11 × 12). 
arr[1] ? Right rotation once modifies 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:

JavaScript
<script>

// Javascript program for the above approach

// function to check Pronic Number
function isPronic(x)
{
    for (var i = 0; i < parseInt(Math.sqrt(x)) + 1; i++) 
    {

        // Checking Pronic Number
        // by multiplying consecutive
        // numbers
        if (x == i * (i + 1)) 
        {
            return true;
        }
    }
    return false;
}

// Function to check if any permutation
// of val is a pronic number or not
function checkRot(val)
{

    var temp = (val).toString();
    for (var i = 0; i < temp.length; i++) 
    {
        if (isPronic(parseInt(temp)) == true)
        {
            return true;
        }
        temp = temp.substring(1) + temp[0];
    }
    return false;
}

// Function to check if all array
// elements can be converted to
// a pronic number or not
function check(arr, N)
{

    // Traverse the array
    for (var i = 0; i < N; i++) 
    {

        // If current element
        // cannot be converted
        // to a pronic number
        if (checkRot(arr[i]) == false) 
        {
            return false;
        }
    }
    return true;
}

// Driven Program

// Given array
var arr = [ 321, 402, 246, 299 ]
var N = arr.length;

// function call
document.write(check(arr, N) ? "True" : "False");

// This code is contributed by noob2000.
</script>

Output: 
True

 

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

Please refer complete article on Check if all array elements can be converted to pronic numbers by rotating digits for more details!

Next Article

Similar Reads