1

昇順で並べ替えられた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などになります。私の考えは、結果これらの3つの数字2、6、または10のいずれかです。

ただし、たとえば(17 + 18 + 19 + 20)%12は2であり、これは正当ですが、たとえば(2 + 3 + 4 + 5)%12も2であるため、機能しません。間違った結果になります。

4

4 に答える 4

6

数字を

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

ルールは

a % 4 == 1    // is the same as:  a & 3 == 1
于 2013-01-18T22:07:34.853 に答える
3

私があなたの質問をはっきりと理解しているなら、あなたはシーケンスの最後の数字が4で割り切れるかどうかをチェックする必要があります。4で割り切れる場合は、有効なシーケンスです。

したがって、シーケンスが次の場合:- a1、、、。この状態を確認してください:-a2a3a4

a4 % 4 == 0

上記の条件が真の場合、有効なシーケンスがあります。

于 2013-01-18T22:07:42.207 に答える
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
于 2013-01-18T22:08:28.410 に答える
2

私が見ることができる最も単純なルールはそれです。

array[3] % 4 == 0

つまり、配列の最後の要素は4で均等に除算されます。これは簡単な解決策になります。

于 2013-01-18T22:07:35.590 に答える