首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >玩阵列游戏

玩阵列游戏
EN

Stack Overflow用户
提问于 2017-09-24 17:53:34
回答 1查看 810关注 0票数 0

Hi无法找到以下问题的解决方案(这里有一个指向原始问题:Sumita and equal array 的链接)。请帮帮忙?

Sumita正在玩一个大小为N的数组A,她想使A的所有值都相等。她可以将数组中任意数量的值乘以X、Y和Z。你的任务是告诉她她是否能做到。打印“她可以”--如果她能做到--再打印“她不能”--“没有”

投入:

代码语言:javascript
复制
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

产出:

代码语言:javascript
复制
For every test case, print the required answer in a new line.

制约因素:

代码语言:javascript
复制
1 ≤ T ≤ 5
2 ≤ N ≤ 10^5
X, Y, Z ∈ {2, 3, 5, 7}
1 ≤ Ai ≤ 10^9

样本输入:

代码语言:javascript
复制
2
2 2 2 2
2 4
3 2 3 2
2 6 7

样本输出:

代码语言:javascript
复制
She can
She can't

解释:

代码语言:javascript
复制
Test case #1: Multiply first value by 2.
Test case #2: Not possible.

到目前为止我的工作:我找到了X,Y,Z的lcm,如果这个数组中的每个元素被lcm除以或者可以被lcm除以,那她就不能了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-24 18:32:50

既然你给出了你自己的想法,但没有代码,我也会这样做:给一些想法,但没有代码。如果你试图对这个想法进行编码,然后陷入困境,通过展示你的代码来编辑你的问题,并寻求更多的帮助。

找到给定数组中的数字的最小公共倍数(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,它有质数因子37。第一个(3)在X, Y, Z列表中,但最后一个(7)不是,所以任务是不可能的。不需要检查数组中其他元素的商。

你能编个程序吗?注意,我使用的是Python的列表,而不是数组。还要注意的是,这个算法取决于质数X, Y, Z的可能值--如果它们可以是复合数,则算法需要调整,而且会更复杂。更准确地说,如果X, Y, Z的任何两个可能的值都是不同的,并且不是相对素数(最大的公共除数大于一个),则需要更改算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46393116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档