检查数字是否按特定顺序排列

时间:2013-01-18 22:04:34

标签: java arrays int modulo

我有一个带有4个数字的int数组,这些数字按升序排序。

我想知道这些数字是否符合此规则:

1, 2, 3, 4 or
5, 6, 7, 8 or
9, 10, 11, 12 or
13, 14, 15, 16
etc.

他们不能

2, 3, 4, 5 or
4, 5, 6, 7 or
23, 24, 25, 26
etc

所以他们必须在一个序列中,但只能在这4个组中!

我尝试添加所有数字(例如1 + 2 + 3 + 4)并执行模12的总和,结果总是10,2,6,10,2,6,我的想法是检查结果是否是这三个数字中的一个,6或10。

但它无法正常工作,因为例如(17 + 18 + 19 + 20)%12是2,这是合法的,但例如(2 + 3 + 4 + 5)%12是2也是合理的,所以这是错误的结果。

4 个答案:

答案 0 :(得分:6)

让数字为

a, a+1, a+2, a+3

规则是

a % 4 == 1    // is the same as:  a & 3 == 1

答案 1 :(得分:3)

如果我清楚地理解你的问题,那么你只需要检查序列中的最后一个数字是否可以被4整除。如果它可以被4整除,那么它就是一个有效的序列。

因此,如果您的序列是: - a1a2a3a4。检查这个条件: -

a4 % 4 == 0

如果上述条件为真,那么您的序列就是有效的。

答案 2 :(得分:3)

说出你的数组的第一个数字是x 然后,x4必须等于1

if (a[0]%4 == 1)
  return true;
else 
  return false;

或者如果是 a[1] % 4 == 2

a[2] % 4 == 3

a[3] % 4 == 0

答案 3 :(得分:2)

我能看到的最简单的规则就是;

array[3] % 4 == 0

也就是说,数组中的最后一个元素均匀地除以4.这将是一个简单的解决方案。