C++程序 检查所有数组元素是否可以通过旋转数字转换为pronic数
给定大小为N的数组 arr [] ,任务是通过任意次数旋转数组元素的数字来检查是否可能将所有数组元素转换为pronic数。
示例:
输入:{ 321, 402, 246, 299}
输出: True
解释:
arr [0]→右旋一次将arr [0]修改为132(= 11×12)。
arr [1]→右旋一次将arr [0]修改为240(= 15×16)。
arr [2]→右旋两次,将arr [2]修改为462(= 21×22)。
arr [3]→右旋两次将arr [3]修改为992(= 31×32)。
输入:{ 433, 653, 402, 186}
输出: False
方法: 按照以下步骤解决问题:
- 遍历数组并检查每个数组元素是否可以转换为Pronic数。
- 对于每个数组元素,应用所有可能的旋转,并检查每次旋转后生成的数字是否为Pronic数。
- 如果无法将任何数组元素转换为Pronic数,请打印 “False” 。
- 否则,请打印 “True” 。
下面是上述方法的实现:
输出:
时间复杂度: O(N 3/2 )
辅助空间: O(1)