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

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

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

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

例子:

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

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

下面是上述方法的实现:

Java
// Java program for the above approach
  
import java.io.*;
import java.lang.*;
import java.util.*;
  
class GFG {
  
  // function to check Pronic Number
  static boolean isPronic(int x)
  {
  
    for (int i = 0; i < (int)(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
  static boolean checkRot(int val)
  {
    String temp = Integer.toString(val);
    for (int i = 0; i < temp.length(); i++) 
    {
      if (isPronic(Integer.parseInt(temp)) == true) {
        return true;
      }
  
      temp = temp.substring(1) + temp.charAt(0);
    }
    return false;
  }
  
  // Function to check if all array
  // elements can be converted to
  // a pronic number or not
  static boolean check(int arr[], int N)
  {
  
    // Traverse the array
    for (int i = 0; i < N; i++) 
    {
  
      // If current element
      // cannot be converted
      // to a pronic number
      if (checkRot(arr[i]) == false) 
      {
        return false;
      }
    }
    return true;
  }
  
  // Driver code
  public static void main(String[] args)
  {
  
    // Given array
    int arr[] = { 321, 402, 246, 299 };
    int N = arr.length;
  
    // Function call
    System.out.println(
      (check(arr, N) ? "True" : "False"));
  }
}
  
// This code is contributed by Kingash.


输出:
True

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

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