■カプレカーのアルゴリズム(その23)
数字が大きい順に並んでいる4桁の数の,順序をひっくり返した数を作り,最初の数から引く.
9≧a≧b≧c≧d≧0
[1](1000a+100b+10c+d)−(1000d+100c+10b+a)=1000(a−d)+100(b−c)+10(c−b)+(d−a)
=999(a−d)+99(b−c)
=99(10a−10d+b−c)
1回の操作で99の倍数になる。
=1000A+100B+10C+D
9≧a>b>c>d≧0(どの2つの数字も同じでないなら)
A=a-d
B=b-1-c
C=10+c-1-b=9+c-b
D=10+d-a
(A,B,C,D)=(a,b,c,d),・・・,(d,c,b,a)・・・24通り
このなかで
A=a-d=b
B=b-1-c=d
C=10+c-1-b=9+c-b=a
D=10+d-a=c
だけが9≧a≧b≧c≧d≧0を満たす。a=7,b=6,c=4,d=1→A=6,B=1:C=7,D=4
===================================
しかし、24通りの連立方程式を解く必要はないと思われる。
A=a-d=bかc
B=b-1-c=dかa
C=10+c-1-b=9+c-b=aかd
D=10+d-a=cかb・・・4通りに絞られる
残りの3通りは
A=a-d=b
B=b-1-c=a
C=10+c-1-b=9+c-b=d
D=10+d-a=c
A=a-d=c
B=b-1-c=a
C=10+c-1-b=9+c-b=d
D=10+d-a=d
A=a-d=c
B=b-1-c=d
C=10+c-1-b=9+c-b=a
D=10+d-a=d
===================================