いいアルゴリズムっていうか小技を教えて
■ このスレッドは過去ログ倉庫に格納されています
0182ないことの証明
NGNG間違ってたら指摘してくれ
表がずれたらゴメソ
数学的帰納法を用いる
初期値 n[0] とし、
stepごとに n[1]、n[2]... と表すことにする。
n[k] ( ただし 0<k ) が条件を満たさないならば、n[0]も条件を満たさない。�@
n[0] = 1 のとき、n[0] は条件を満たさない・・・�A
n[0] > 1 のとき、
1 <= k < n[0] を満たすすべての k が条件を満たさないと仮定する
n[0] が偶数のとき
n[1] = n[0]/2 < n[0]
仮定により n[0] より小さい n[1] は条件を満たさないため、n[0] も条件を満たさない・・・�B
n[0]が奇数のとき
これを2進数で表し、値が0になる最も下位の桁を R( R>1 )とする。・・・(A)
このとき、n[0] は
↓R 桁目
xxx...x0111...1111(2)
と表せる(x = 0 or 1)
n[1] = n[0]*3+1 = n[0] + ( (n[0]<<1)+1 )
なので
n[1] =
↓R 桁目
xxx...x0111...1111(2)
+xxx...x0111...11111(2)
--------------------
xxx...xxx0111..11110(2)
↑R 桁目
n[1] は R 桁目が0、かつ2以上 R 未満の桁はすべて1の偶数である
ここで、R=2のとき、
n[1] は1桁目、2桁目ともに0なので 4 の倍数、
n[2] = n[1]/2 は偶数
n[3] = n[2]/2 = n[0]/4 となる
n[0]>1 より、n[3]<n[0]、仮定により n[3] は条件を満たさないため、 n[0] も条件を満たさない・・・�C
R>2のとき
n[2] = n[1]/2
n[2] は(R-1)桁目が0、(R-1)未満の桁はすべて1の奇数になる。
これに対して再び(A)を適用することで、
n[R*2-4] は条件を満たさないことが分かる。
R>2 なので R*2-4>0、よって n[0] も条件を満たさない・・・�D
�A�B�C�Dより、条件を満たす初期値 n[0] は存在しない
■ このスレッドは過去ログ倉庫に格納されています