发表于:2004.10.07 12:23
分类: Smart Ideal
出处:http://rollingpig.itpub.net/post/81/2745
---------------------------------------------------------------
著名的 "贝韦克的七个7的问题" (Berwick's Problem of the Seven Sevens)
在下面除法例题中,被除数被除数除尽:
* * 7 * * * * * * * / * * * * 7 * = * * 7 * *
* * * * * *
-------------------
* * * * * 7 *
* * * * * * *
-------------------
* 7 * * * *
* 7 * * * *
--------------------
* * * * * * *
* * * * 7 * *
---------------------
* * * * * *
* * * * * *
花了点时间,终于解出来了。
* * 7 * * * * * * * / * * * * 7 * = * * 7 * *
* * * * * *
-------------------
* * * * * 7 *
* * * * * * *
-------------------
* 7 * * * *
* 7 * * * *
--------------------
* * * * * * *
* * * * 7 * *
---------------------
* * * * * *
* * * * * *
1.把商的几位设为 a b 7 c d,除数设为U V W X 7 Y,同时,为了方便,把商写在相应的乘积的后面
* * 7 * * * * * * * / U V W X 7 Y = a b 7 c d
* * * * * * a
-------------------
* * * * * 7 *
* * * * * * * b
-------------------
* 7 * * * *
* 7 * * * * 7
--------------------
* * * * * * *
* * * * 7 * * c
---------------------
* * * * * *
* * * * * * d
2.很显然,从商第3位(7)与除数相乘仍为六位数可以发现,U=1,同理,也可以知道几个积为七位数的,积的第一位必然是1,另外,a,d小于或等于7,b,c大于7
* * 7 * * * * * * * / 1 V W X 7 Y = a b 7 c d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
* 7 * * * * 7
--------------------
* * * * * * *
1 * * * 7 * * c=8/9
---------------------
* * * * * *
* * * * * * d<=7
3.A处可能是0或9,而QA可能是20/19/10
* * 7 * * * * * * * / 1 V W X 7 Y = a b 7 c d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
* 7 * * * * 7
--------------------
Q A * * * * * QA = 20/19/10
1 * * * 7 * * c=8/9
---------------------
* * * * * *
* * * * * * d<=7
4。如果QA为20/19,那么V必须为9,7x19****是六位数,无法符合商的第三位。所以QA肯定是10,下面的积也只能是10
* * 7 * * * * * * * / 1 V W X 7 Y = a b 7 c d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
* 7 * * * * 7
--------------------
1 0 * * * * * QA不可能为20/19
1 0 * * 7 * * c=8/9
---------------------
* * * * * *
* * * * * * d<=7
5.再来设想c,假设c=9,那么积只能是108****,等于是说V=2,为了符合7 x 12**** = *7******,除数前三位必须为125
* * 7 * * * * * * * / 1 2 5 X 7 Y = a b 7 c d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
8 7 * * * * 7
--------------------
1 0 * * * * *
1 0 8 * 7 * * c=9
---------------------
* * * * * *
* * * * * * d<=7
6.但是,W=5的话,9*125***就不再是108****了,所以,c=9显然是不对的。结论就是c=8.
在c=8的情况下,V必须为2 or 3
* * 7 * * * * * * * / 1 V W X 7 Y = a b 7 8 d V=2/3
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
* 7 * * * * 7
--------------------
1 0 * * * * *
1 0 * * 7 * * 8
---------------------
* * * * * *
* * * * * * d<=7
7.如果V=3,那么W必须为9才能满足7x139***=*7****,但是,8x139***又不满足10*****了,所以V=2
* * 7 * * * * * * * / 1 3 9 X 7 Y = a b 7 8 d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
* 7 * * * *
9 7 * * * * 7
--------------------
1 0 * * * * *
1 0 * * 7 * * 8
---------------------
* * * * * *
* * * * * * d<=7
8。V=2,
对于商第三位,7x125***=*7****,7x124***=*7**** W=4/5
对于商第四位,8x125***=10*****,8x126***=10*****,8x127***=10***** W>=5
所以W=5
* * 7 * * * * * * * / 1 2 5 X 7 Y = a b 7 8 d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
9 7 * * * *
8 7 * * * * 7
--------------------
1 0 * * * * *
1 0 * * 7 * * 8
---------------------
* * * * * *
* * * * * * d<=7
9.考虑 8 x 125X7Y = 10**7**
8 x 7 = 56
所以积的第三四位 = 8 x X + (5/6) = *7
8 x X = *(2 or 3)
X = 4
商的3,4位出来的积可以继续填充
* * 7 * * * * * * * / 1 2 5 4 7 Y = a b 7 8 d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
9 7 * * * *
8 7 8 * * * 7
--------------------
1 0 * * * * *
1 0 0 3 ? * * 8 ?=7/8
---------------------
* * * * * *
* * * * * * d<=7
10. 97**** - 878*** > 101****
所以.97**** = 979***
继续填充相关等式
可以得出
d = 1
* * 7 * * * * * * * / 1 2 5 4 7 Y = a b 7 8 d
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
9 7 9 * * *
8 7 8 * * * 7
--------------------
1 0 1 * * * *
1 0 0 3 ? * * 8 ?=7/8
---------------------
1 * * * * *
1 * * * * * d<=7
11.继续填充相关等式
同时考虑下图的L,K,N,M处
NM-3(7/8)=25
所以
N=6
12547* x 7=87829+(<70)
K=(2/3)
可以得出
L=8/9
* * 7 * * * * * * * / 1 2 5 4 7 Y = a b 7 8 1
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
9 7 9 L * * L=8/9
8 7 8 K * * 7 K=2/3
--------------------
1 0 1 N M * *
1 0 0 3 ? * * 8 ?=7/8
---------------------
1 2 5 4 7 Y
1 2 5 4 7 Y 1
12.假设K=2,那么Y只能为1
填充相关等式
* * 7 * * * * * * * / 1 2 5 4 7 1 = a b 7 8 1
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * * * b=8/9
-------------------
9 7 9 9 3 0
8 7 8 2 9 9 7
--------------------
1 0 1 6 3 1 5
1 0 0 3 7 6 8 8
---------------------
1 2 5 4 7 1
1 2 5 4 7 1 1
13。再根据b=8/9两种情况进行填充
b=8
* * 7 * * * * * * * / 1 2 5 4 7 1 = a b 7 8 1
* * * * * * a<=7
-------------------
* * * * * 7 *
1 0 0 3 7 6 8 b=8
-------------------
9 7 9 9 3 0
8 7 8 2 9 9 7
--------------------
1 0 1 6 3 1 5
1 0 0 3 7 6 8 8
---------------------
1 2 5 4 7 1
1 2 5 4 7 1 1
很显然 *7* - 768 不可能出现 93,所以 b<>8
b=9
* * 7 * * * * * * * / 1 2 5 4 7 1 = a b 7 8 1
* * * * * * a<=7
-------------------
* * * * * 7 *
1 1 2 9 2 3 9 b=9
-------------------
9 7 9 9 3 0
8 7 8 2 9 9 7
--------------------
1 0 1 6 3 1 5
1 0 0 3 7 6 8 8
---------------------
1 2 5 4 7 1
1 2 5 4 7 1 1
*7* - 239 也不可能出现 93,所以b<>9
也就是说 Y=1的情况不成立
14.
Y > 1
K = 3
N = 6
L = 9
考虑 P
*7* - *P* = 9*
P=7/8
* * 7 * * * * * * * / 1 2 5 4 7 Y = a b 7 8 1
* * * * * * a<=7
-------------------
* * * * * 7 *
1 * * * * P * b=8/9
-------------------
9 7 9 9 * *
8 7 8 3 * * 7
--------------------
1 0 1 6 M * *
1 0 0 3 ? * * 8 ?=7/8
---------------------
1 2 5 4 7 Y
1 2 5 4 7 Y 1
15.计算Y=(0-9),b=8/9
(这里使用了一些oracle的技巧,完全可以用别的编程手段来完成,java,c,shell,甚至用excel也可以做到,只是正好选用了oracle。当然没有计算机的话,用笔算,珠算也可以的)
RollingPig>variable b number
RollingPig>exec :b := 9
1 select :b as b,to_char(:b*(125470+rownum),'999,999,999')as result,rownum Y
2 from all_objects
3* where rownum < 10
RollingPig>/
B RESULT Y
--- ------------ ---
9 1,129,239 1
9 1,129,248 2
9 1,129,257 3
9 1,129,266 4
**9 1,129,275 5
**9 1,129,284 6
9 1,129,293 7
9 1,129,302 8
9 1,129,311 9
RollingPig>exec :b := 8
RollingPig>/
B RESULT Y
--- ------------ ---
8 1,003,768 1
**8 1,003,776 2
**8 1,003,784 3
8 1,003,792 4
8 1,003,800 5
8 1,003,808 6
8 1,003,816 7
8 1,003,824 8
8 1,003,832 9
而 积的倒数第2位(P)为 7/8 有4种情况
b=9,Y=5
b=9,Y=6
b=8,Y=2
b=8,Y=3
15.逐个来看(当然会把不成功放前面了:) )
b=9,Y=5
a=(1-7)
RollingPig>set feedback off
RollingPig>variable b number
RollingPig>variable Y number
1 select rownum as a,:b,:y,(rownum*10000+1000*:b+781)*(125470+:Y) as result
2 from all_objects
3* where rownum < 8
RollingPig>exec :y:=5
RollingPig>exec :b:=9
A :B :Y RESULT
1 9 5 2482020975
2 9 5 3736770975
3 9 5 4991520975
4 9 5 6246270975
5 9 5 7501020975
6 9 5 8755770975
7 9 5 10010520975
显然,第三位没有为7的
b=9,Y=6
a=(1-7)
RollingPig>exec :Y:=6
RollingPig>/
A :B :Y RESULT
1 9 6 2482040756
2 9 6 3736800756
3 9 6 4991560756
4 9 6 6246320756
5 9 6 7501080756
6 9 6 8755840756
7 9 6 10010600756
b=8,Y=3
a=(1-7)
RollingPig>exec :b:=8
RollingPig>exec :y:=3
RollingPig>/
A :B :Y RESULT
1 8 3 2356508413
2 8 3 3611238413
3 8 3 4865968413
4 8 3 6120698413
**5 8 3 7375428413
6 8 3 8630158413
7 8 3 9884888413
b=8,Y=2
a=(1-7)
RollingPig>exec :y:=2
RollingPig>/
A :B :Y RESULT
1 8 2 2356489632
2 8 2 3611209632
3 8 2 4865929632
4 8 2 6120649632
**5 8 2 7375369632
6 8 2 8630089632
7 8 2 9884809632
可以发现 a=5,b=8 而Y暂时还有2,3两种可能
16.继续破解
Y=2
7 3 7 5 3 6 9 6 3 2 / 1 2 5 4 7 2 = 5 8 7 8 1
6 2 7 3 6 0 5
-------------------
1 1 0 1 7 6 9
1 0 0 3 7 7 6 8
-------------------
9 7 9 9 3 6
8 7 8 3 0 4 7
--------------------
1 0 1 6 3 2 3
1 0 0 3 7 7 6 8
---------------------
1 2 5 4 7 2
1 2 5 4 7 2 1
第三行的倒数第2个数字为6
看来又不行了。
Y=3
7 3 7 5 4 2 8 4 1 3 / 1 2 5 4 7 3 = 5 8 7 8 1
6 2 7 3 6 5 5
-------------------
1 1 0 1 7 7 8
1 0 0 3 7 8 4 8
-------------------
9 7 9 9 4 4
8 7 8 3 1 1 7
--------------------
1 0 1 6 3 3 1
1 0 0 3 7 8 4 8
---------------------
1 2 5 4 7 3
1 2 5 4 7 3 1
大功告成。






