0

正規表現/オートマトンのヘルプを探しています。私は+またはクリーネスターに限定されています。3 進数 (2 進数のように 3 のみ) を表す文字列を解析する場合、結果が 1 から 4 の倍数より小さいかどうかを知る必要があります。

たとえば、120 = 0*1+2*3+1*9 = 9+6 = 15 = 16-1 = 4(n)-1.

パターンへのポインタでさえ本当に役に立ちます!

4

2 に答える 2

0

各桁の値(10進数)は、交互に4で割り切れる値より1多いか1少ないことに注意してください。したがって、1(lsb)桁は0より大きい1、3(2)桁は4より小さい1、9(3)桁は8より大きい1、27(4)桁は28より小さいなどです。 。
すべての偶数桁とすべての奇数桁を合計し、奇数桁に1を加算すると(1から数える場合)、同等になるはずです。

あなたの例では:奇数:(0 + 1)+1、偶数:(2)。したがって、それらは等しく、その数は4n-1の形式になります。

于 2012-04-20T05:56:16.927 に答える
0

一連の値を生成して、bash で bc を使用していくつかの観察を行うことができます。

for n in {1..40}; do v=$((4*n-1)); echo -en $v"\t"; echo "ibase=10;obase=3;$v" | bc ; done 

3   10
7   21
11  102
15  120
19  201
23  212
27  1000
31  1011
...
于 2012-04-06T01:30:46.480 に答える