2013-01-18 38 views
1

我有一個int數組,有4個數字按遞增排序。檢查數字是否在一個特定的序列

我想找出這些數字是否符合這個規則:

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等。我的想法是檢查結果是否是這三個數字2,6或10中的一個。

但它無法工作因爲例如(17 + 18 + 19 + 20)%12是2,這是合法的但例如(2 + 3 + 4 + 5)%12也是2,但它不合法,所以它會是錯誤的結果。

+1

你可以發佈你的代碼嗎? – Smit

+0

我假設你有一個2維數組。對於每一行,查找列y的值是否爲4 +前一列x的值。 –

回答

6

讓數字來

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

規則是

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

+1位和。還(a1 + a2 + a3 + a4 - 10)%4 = 0他笑了,說道。 –

+0

感謝這工作! – user1991796

+0

對不起我是新的這是我的第一篇文章,但我現在接受了答案 – user1991796

2

我能看到的最簡單的規則是;

array[3] % 4 == 0 

即,陣列中的最後一個元件均勻地劃分4.那將是一個簡單的解決方案。

3

如果我明白你的問題,那麼你只需要檢查你的序列中的最後一個數字是否可以被4整除。如果它能被4整除,那它是一個有效的序列。

因此,如果您的序列是: - a1,a2,a3, a4。檢查這個條件: -

a4 % 4 == 0 

如果上述條件是真的,那麼你有一個有效的序列。

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 
+0

謝謝這工作 – user1991796

相關問題