【动脑筋】数学魔术
昨天在天才帮出了一道题。既然天才帮声势浩大,帮众日多,我以为在那里出题就等于在版面出题了。不料还是有很多人没看见这题,就是说还应该发在版面才能给更多的人看到。
可是,找来找去,不知道发在哪个版面合适。有心发在研究生院,但一看规矩,得有论文水平才行。俺还是别捣乱了。
就这儿吧,日志随笔,谁都能看见了,是吧?现在出题。
=====================================
本题还是取自七旬老人发明"数学魔术" 5秒猜出你心里想的数
请你想一个四位的自然数abcd,把它乘以8889,告诉我乘积的4位尾数ABCD,我就能知道你想的是什么数。
例如:
如果你告诉我尾数是9026,则我知道你原来想的那个数是1234;
如果你告诉我尾数是7421,则我知道你原来想的那个数是6789;
如果你告诉我尾数是5679,则我知道你原来想的那个数是1111;
……
本题有几重玩法。
第一重:请大家出题,我来给出答案。
即,你来给出尾数ABCD,我来给出原数abcd。
例:你说“ABCD=9026”,我说:“abcd=1234”。——这就是那七旬老者的玩法,即所谓“数学魔术”。很神奇?
第二重:我来出题,参与者给出答案。
1,ABCD=9369
2,ABCD=2412
3,ABCD=7889
4,ABCD=9160
5,ABCD=0668
6,ABCD=8059
7,ABCD=8002
8,ABCD=2908
9,ABCD=5094
10,ABCD=5992
这些是原数乘以8889之后的末尾四位,你能给出10个原数其中一个也行,我会给你评分~
第三重:打擂——参与者给出算法。
注意,我的算法都不是从网上找来的,而是自己推理演算得出的。也请你注明你的算法是找来的还是算出来的。——我都会给你评分~
第四重:揭榜——参与者推演出算法的原理。
我就是为了寻求这个算法并推演严格的逻辑,而花了大半天的时间!
你若能给出清晰无误的推演过程,你就是俺的知音!俺的偶像!以后就有人跟俺一起玩了~
===========================================
昨天出完这题后。我把这题给了某聪明的朋友。
只肖几分钟,朋友就给出了一个算法,比俺的算法更简单易记——而且我相信这就是那老者的算法。
因为我的算法推演过程比较复杂,算法相对而言不大容易记住,算的过程也需小心谨慎,稍不留神就容易出错。
不过,凭心而论,我的算法也不是不可取,因为某种意义上讲,俺的算法还是更容易心算出来的。没有经过心算训练的人用我的算法能更快给出答案呢!
所以,无论你推演出了哪种算法,你都是好样的!
(嗯?还可以选来自哪个群组?选了天才帮,看看有个什么效果。)天才帮 很简单,8889=10000-1111。
没时间了,回头再写。 本帖最后由 仁 于 2014-8-27 03:28 编辑
个位数是0: D+d=10 or 0
十位数是0: C+c+d=0, 10, 9 or 19(如果 D+d =0 , 可能的结果是0或10,如果D+d=10, 可能的结果是9或19)
...
(10000 - 1000 -100 - 10 -1 )* abcd = 10000 * x+ ABCD
也就是说 abcd000 + abcd00 + abcd0 + abcd + ABCD 的结果一定是可以被10000整除,也就是说从个位到千位都是0。 本帖最后由 牛腰 于 2014-8-27 04:00 编辑
abcd X 8889 = abcd X (1,0000 - 1111) = abcd,0000 - aaaa000 - bbbb00 - cccc0 - dddd
只算最后四位数的话,那就是 (1),0000 - a000 - bb00 - ccc0 - dddd
如果ABCD=9369。能决定个位数的只有d,所以d=10-9=1
十位数 = 9 - 6 - c - d, 那么 c = 9 - 6 - 1 = 2
百位数 = 9(或19) - 3 - b - c - d,b = 9 - 3 - 1 - 2 = 3
千位数 = 9(或19) - 9 - a - b - c - d,a = 19 - 9 - 1 - 2 - 3 = 4
验算:4321 X 8889 = 3840,9369
上面如果ABCD的个位数是0,那么十位数就从10而不是9开始减起。再往后推也是一样,后面的借位决定每一位数的开始值是10,9还是8。
自己想出来的。{:soso_e113:} 牛腰 发表于 2014-8-26 14:48
abcd X 8889 = abcd X (1,0000 - 1111) = abcd,0000 - aaaa000 - bbbb00 - cccc0 - dddd
只算最后四位数的 ...
用你的方法试试我出的10道题?如果没时间就只试最后两道吧~ 仁 发表于 2014-8-26 13:59
个位数是0: D+d=10 or 0
十位数是0: C+c+d=0, 10, 9 or 19(如果 D+d =0 , 可能的结果是0或10,如果D+d ...
也就是说 abcd000 + abcd00 + abcd0 + abcd + ABCD 的结果一定是可以被10000整除
这句话似乎不是你本来想表达的意思?再仔细看看? 本帖最后由 牛腰 于 2014-8-27 04:14 编辑
喜欢 发表于 2014-8-27 03:59
用你的方法试试我出的10道题?如果没时间就只试最后两道吧~
ABCD = 5094
d = 10 - 4 = 6
c = 19 - 9 - 6 = 4
b = 18 - 0 - 6 - 4 = 8
a = 28 - 5 - 6 - 4 - 8 = 5
验算:5846 X 8889 = 5196,5094
ABCD = 5992
d = 10 - 2 = 8
c = 19 - 9 - 8 = 2
b = 28 - 9 - 2 - 8 = 9
a = 27 - 5 - 8 - 2 - 9 = 3
验算:3928 X 8889 = 3491,5992:lol
上面没说清楚的是(1)如果一位数的减法得了负数,就加10的倍数,直到得出一个个位正数,(2)上一位数的起始值向上round到最小的10的倍数,10减去它的十位数就是下一位数起始值的个位数。 牛腰 发表于 2014-8-26 15:08
ABCD = 5094
d = 10 - 4 = 6
你如何确定那里是19或18或28或27的?
每道题都做减法大竖式吗? 喜欢 发表于 2014-8-27 04:12
你如何确定那里是19或18或28或27的?
每道题都做减法大竖式吗?
补充了我上面的回复。 牛腰 发表于 2014-8-26 15:14
补充了我上面的回复。
能不能再说明白点儿?因为这魔术弄好了应该人人会玩呢。
你能用实例(我的10道题就行)把玩的过程解释清楚、教会旁人么? 本帖最后由 牛腰 于 2014-8-27 04:26 编辑
喜欢 发表于 2014-8-27 04:12
你如何确定那里是19或18或28或27的?
每道题都做减法大竖式吗?
以ABCD=5992为例
d: 10-2=8
c: 起始值个位数是10-1=9,9+8=17大于10,所以起始值是19, 19-9-8=2
b: 起始值个位数是10-2 (19变20) = 8,9+8+2=19,起始值就是28才能得到一个个位数:28-9-2-8=9
a: 起始值个位数是10-3(28变30)=7, 5+8+2+9=24,起始值必须是27,27-5-8-2-9=3。
想着容易,解释起来挺饶的{:soso_e100:} 喜欢 发表于 2014-8-27 04:02
这句话似乎不是你本来想表达的意思?再仔细看看?
要想严谨地说明还必叫麻烦,但是思路在那里,实际操作很简单。ABCD=9026
D+d= 0 or 10 >>>> d=4
C+c+d=9 or 19 >>>> c=3
B+b+c+d=9 or 19 or 29 >>> b=2
A+a+b+c+d =0 or 10 or 20or 30 >>>> a=1
最后四位数字都是0:
1234000 + 123400 + 12340 + 1234 + 9026=1380000 有趣
我自己的解法如下
1. 令 MNOP=10000-ABCD
2. 为了方便说明,
定义一个数X的各位和为 sum.dig(X).
定义mod10(Y): (i) Y>0,则为Y的个位数字
(i)
则
1. d=P
2. O- 牛腰 发表于 2014-8-26 15:22
以ABCD=5992为例
d: 10-2=8
我觉得做起来也很绕啊,这样的算法,能在5秒内就把任何一题心算出来么? 仁 发表于 2014-8-26 15:27
要想严谨地说明还必叫麻烦,但是思路在那里,实际操作很简单。ABCD=9026
D+d= 0 or 10 >>>> d=4
B+b+c+d=9 or 19 or 29 >>> b=2
A+a+b+c+d =0 or 10 or 20or 30 >>>> a=1
两个式子中,前一个一定是9/19/29之一吗?
后一个,怎么会是0/10/20/30之一呢?
你换个例子试试看,比如用我出的10题中后面两个。 本帖最后由 黑洞的颜色 于 2014-8-27 04:44 编辑
有趣
我自己的解法如下
1. 令 MNOP=10000-ABCD
2. 为了方便说明,
定义一个数X的各位和为 sum.dig(X).
定义mod(Y): (i) Y>=0,则为Y的个位数字 (ii) Y<0, 则为 10 - Y的个位数字
如 mod(3)=7, mod(-2)=8
那么
1. d=P
2. c=mod(O-d)
3. b=mod(N-sum.dig(c+d))
4. a=mod(M-sum.dig(c+c+d))
即先得到10000-ABCD,再从后向前找,减去前面已经找到的数字的和的各位和,如果是负数则加10。
比如
ABCD=7421,
得到2579,
d=9;
c=mod(7-9)=mod(-2)=8;
c+d=17, sum.dig=1+7=8,b=mod(5-8)=mod(-3)=7
b+c+d=24, sum.dig=2+4=6, a=mod(2-6)=6
得 abcd=6789
想明白了算得非常快。 黑洞的颜色 发表于 2014-8-26 15:31
有趣
我自己的解法如下
1. 令 MNOP=10000-ABCD
您这是用电脑算呢还是人脑算呢?{:214:}
俺们的目的是要用人脑算,5秒钟就出结果。 喜欢 发表于 2014-8-27 04:36
我觉得做起来也很绕啊,这样的算法,能在5秒内就把任何一题心算出来么? ...
刚试了一下第8题,ABCD=2908,心算出6172,可以做到。练习一下应该可以做得更快。 喜欢 发表于 2014-8-27 04:43
您这是用电脑算呢还是人脑算呢?
俺们的目的是要用人脑算,5秒钟就出结果。 ...
仔细看看就发觉不过是先做一个10000减法,然后不断加减个位数字而已。 黑洞的颜色 发表于 2014-8-26 15:42
有趣
我自己的解法如下
1. 令 MNOP=10000-ABCD
哎哟,你这个我已经判断不能了!{:214:}
貌似是对的?你自己用我那十题把这算法验算一下(十遍)好吗?{:213:}