我有一个带有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也是合理的,所以这是错误的结果。
答案 0 :(得分:6)
让数字为
a, a+1, a+2, a+3
规则是
a % 4 == 1 // is the same as: a & 3 == 1
答案 1 :(得分:3)
如果我清楚地理解你的问题,那么你只需要检查序列中的最后一个数字是否可以被4整除。如果它可以被4整除,那么它就是一个有效的序列。
因此,如果您的序列是: - a1
,a2
,a3
,a4
。检查这个条件: -
a4 % 4 == 0
如果上述条件为真,那么您的序列就是有效的。
答案 2 :(得分:3)
说出你的数组的第一个数字是x
然后,x
模4
必须等于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.这将是一个简单的解决方案。