嗨,无法找出以下问题的解决方案(这里是原始问题的链接:Sumita and equal array )。请帮忙吗?
Sumita正在玩一个大小为N的阵列A.她希望A的所有值都相等。她可以通过X,Y和Z将数组中任意数量的值乘以任意次数。您的任务是告诉她是否可以这样做。打印“她可以”,如果她可以做其他打印“她不能”没有“”
输入:
First line of the input will contain T (No. of test cases).
For each test case, first line will contain four space separated integers denoting N, X, Y and Z.
Then next line will contain N space separated integers of A
输出:
For every test case, print the required answer in a new line.
约束:
1 ≤ T ≤ 5
2 ≤ N ≤ 10^5
X, Y, Z ∈ {2, 3, 5, 7}
1 ≤ Ai ≤ 10^9
示例输入:
2
2 2 2 2
2 4
3 2 3 2
2 6 7
示例输出:
She can
She can't
说明:
Test case #1: Multiply first value by 2.
Test case #2: Not possible.
到目前为止我的工作:我发现lcm的X,Y,Z如果该数组中的每个元素被划分或者可以除以lcm然后ans是她可以,她不能
答案 0 :(得分:0)
既然你提出了自己的想法但没有代码,我会做同样的事情:提出一些想法,但没有代码。如果您尝试编写此想法并陷入困境,请通过显示您的代码来编辑您的问题并寻求更多帮助。
您有正确的想法找到给定数组中数字的最小公倍数(LCM)。对于数组的每个元素,您可以计算LCM和元素的商 - 该商保证为正整数。然后看看是否存在不是X,Y或Z的商的任何素数除数。如果存在这样的除数,那么你的任务是不可能的:"她不能"。如果没有这样的除数,则该元素通过测试。如果所有元素都通过了此测试,则可以执行以下任务:"她可以"。
对于您的第一个数组[2, 4]
和X, Y, Z
值[2, 2, 2]
,数组的LCM为4
。第一个商是4 // 2 = 2
,该商的唯一主要除数是2
,它位于X, Y, Z
列表中。第二个商是4 // 4 = 1
,它没有素数除数,因此该元素也通过了测试。所有元素都通过了测试。所以任务是可能的。
对于您的第二个数组[2, 6, 7]
和X, Y, Z
值[2, 3, 2]
,数组的LCM为42
。第一个商是42 // 2 = 21
,它具有素数除数3
和7
。第一个(3
)位于X, Y, Z
列表中,但最后一个(7
)不是,因此任务是不可能的。无需检查数组中其他元素的商。
你能编程吗?请注意,我使用的是Python列表而不是数组。另请注意,此算法取决于X, Y, Z
作为素数的可能值 - 如果它们可能是复合数,则需要调整算法并使其更复杂。更确切地说,如果X, Y, Z
的任何两个可能值是不同的并且不是相对素数(具有大于1的最大公约数),则需要更改算法。