大脚丫
发表于 2014-8-29 11:34:04
喜欢 发表于 2014-8-29 10:53
接着来。这次是爆炸性的答案!
俺说过,俺把这题目给了一个朋友——一直被我奉为聪明人的朋友。果然不负我 ...
数学以前就没学的怎么好,现在陪着孩子一起学,也是速度上不来,去考试肯定完蛋。
这种题目是数论方面的,小学知识就可以解决,但是现在小学生要去学奥数才接触这类题目。
这道题我还要睡一觉才解决,昨天晚上就没做出来。
我的思路也是那个8889=10000-1111,然后列竖式计算。过程不复杂,和你前面列出来的差不多,但是有细微的不同。我的基本公式是这样的:
d=10-D
c=9-(C-D)
b=9-(B-C)
a=9-(A-B)
这样的公式方便记忆,但是要处理进位问题,就是这个进位昨天晚上把我难住了。
如:ABCD=7421, 这个例子高位上的数字都大于低位上的数字,所以没有进位问题,直接用公式,
d=10-D=10-1=9
c=9-(C-D)=9-(2-1)=8
b=9-(B-C)=9-(4-2)=7
a=9-(A-B)=9-(7-4)=6
得:abcd=6789
例二:ABCD=9026 ,这个就有进位问题了。
d=10=D=10-6=4
c=9-(C-D)=9-(2-6)=13 ;这里发生进位了,十位上的数字1要加到下面一位。
b=9-(B-C)+1=9-(0-2)+1=12;再次发生进位,十位上的数字1再次加到下面一位。
a=9-(A-B)+1=9-(9-0)+1=1
得:abcd=1234
这种算法容易记忆,但是和前面那个用10000来减的算法比起来就笨多了。
虽然慢了一点,但是我好歹自己想办法解决了。
喜欢
发表于 2014-8-29 11:52:37
大脚丫 发表于 2014-8-28 22:34
数学以前就没学的怎么好,现在陪着孩子一起学,也是速度上不来,去考试肯定完蛋。
这种题目是数论方面的 ...
说得很明白。
只是那几个公式是怎么推出来的,需要详细一点才好。
要说简单好算,我在60楼的“爆炸性解法”才是最简单的解法。{:222:}
黑洞的颜色
发表于 2014-8-29 12:01:16
本帖最后由 黑洞的颜色 于 2014-8-29 12:05 编辑
喜欢 发表于 2014-8-29 10:53
接着来。这次是爆炸性的答案!
俺说过,俺把这题目给了一个朋友——一直被我奉为聪明人的朋友。果然不负我 ...
这个要佩服一下。能够直接看到乘数的结果的确是天才。
我的方法要直接一点,和你的方法原理是一样的,只不过注意到了进位关系而已。看到这个时已经差不多写完了,还是做个记录吧。
原理
1. abcd*8889=abcd*(10000-1111)=abcd0000 – abcd*1111=???*10000+ABCD,
2. 只要考虑最后四位数字, 所以只有最后四位有关系。就是
10000-( abcd*1111)之最后四位=ABCD,
也即
( abcd*1111)之最后四位=10000-ABCD=MNOP 为四位数字(M可能为0)
3. 列出竖式乘法
abcd
× 1111
= abcd
abcd
abcd
abcd
= ……….MNOP 是刚才得到的最后四位数。
显然
1) P=d,
2) O = c+d 的个位数=mod(c+d) 。
即我们定义mod(X)为数X的个位数。例如mod(3)=3; mod(12)=2; mod(10)=0.
在这一步可能有进位,也就是说c+d=O或者 c+d=10+O(进位)。为了以下说明方便,统一写成c+d=yO。即y=c+d可能的进位。进位时y=1, 否则y=0。
这样我们容易写出c=yO-d, 并且当O<d时 y=1
例如O=9,d=8,则 c=mod(09-8)=1;
又如O=2,d=8,则 c=mod(12-8)= 4
3) N = (b+c+d+y) 的个位数=mod(b+c+d+y)。y 是c+d可能的进位。
看上去复杂,其实除了未知b以外,等式右边真正有需要的只有c+d+y的个位数 , 记为x=mod(c+d+y)。
现在理解的关键在这一步:x就是c+d的各位数字之和。
例如 c=7, d=8 则c+d=15,其各位数字之和 x=1+5;
再例如c=1,d=2 则c+d=3, x=3;
再例如c=2,d=8,x=1。
也就是说不断的加数字直到只剩下1位。
得到x之后我们就回到了2),只要计算N=mod(b+x), 可同理得
b=zN-x, z=1 if N<x。
4) M=(a+b+c+d+z) 的个位数, 推理同上
这种方法没有特殊情况需要记忆,所以想明白之后计算起来很快。如果考虑到MNOP和ABCD的关系,基本上就是你的算法了。
这个说起来特别麻烦,实际上要是对模数和进位有了解的话(比如程序员),以上推理都不要,基本就能看出来。我猜二当家的就是用了近似的思路。
喜欢
发表于 2014-8-29 12:44:57
黑洞的颜色 发表于 2014-8-28 23:01
这个要佩服一下。能够直接看到乘数的结果的确是天才。
我的方法要直接一点,和你的方法原理是一样的,只 ...
谢谢你说得这么详尽,我比较明白你的思路了。
不过,对那个关键点还需要你指点一下:为什么mod(c+d+y)就是(c+d)各位数字之和?{:200:}
大脚丫
发表于 2014-8-29 14:22:55
喜欢 发表于 2014-8-29 11:52
说得很明白。
只是那几个公式是怎么推出来的,需要详细一点才好。
没有详细写推导过程,主要是前面已经有朋友推导过了,我和前面的没有大的差异。
abcd*8889=abcd*(10000-1111)=abcd0000-abcd*1111
下面列竖式:(是个减法的竖式)
abcd0000
abcd000
abcd00
abcd0
abcd
-------------------
ABCD
与下面这个等价!
abcd0000
abcd000
abcd00
abcd0
ABCD
-------------------
abcd
排版不好弄,意思一下。转成横式,可以得出:
d=10-D
c=19-d-C=9+10-d-C=9+D-C=9-(C-D);这里是19是因为后面已经借了一位了。
b=28-(c+d)-B=9+19-(c+d)-B=9-B+C=9-(B-C);这里是28是因为后面已经借了两位了。
同上,a=9-(A-B)。
===================
前面我没有理解60楼的方法,他的方法出色的地方是用到了乘法的特殊性,我们其他人的方法基本上是应用加法的特殊性。他是8889*9=80001,我们是10000-1111=8889。简直就是高下立判。
黑洞的颜色
发表于 2014-9-5 03:30:52
喜欢 发表于 2014-8-29 12:44
谢谢你说得这么详尽,我比较明白你的思路了。
不过,对那个关键点还需要你指点一下:为什么mod(c+d+y)就 ...
在这一步里
3) N = (b+c+d+y) 的个位数=mod(b+c+d+y)。
注意到y 就是c+d 的进位,比如c=8, d=9, c+d=17, 则y=1. 那么在计算N的竖式里
N = b+c+d+y 的个位数 =b+8+9+1 的个位数 =b+18 的个位数 =b+8
注意到18的个位数 8 就是 c+d 的个位数 (7) 加上 进位了的 1。就是说把c+d的进位又加回来到个位数上来。
loy_20002000
发表于 2017-2-8 00:06:19
abcd * 8889=abcd*(8888+1)=abcd*(1111*8 +1)=abcd*1111*8+abcd
示意图如下:
abcd
x) 1111
____________
abcd
abcd0
abcd00
abcd000
= r1
x) 8
+) abcd
____________
[(a+b+c+d)*1000+(b+c+d)*100+(c+d)*10+d]*8+a*1000+b*100+c*10+d ===
(8a+8b+8c+8d)*1000+(8b+8c+8d)*100+(8c+8d)*10+8*d+a*1000+b*100+c*10+d
【(9a+8b+8c+8d)*1000+(9b+8c+8d)*100+(9c+8d)*10+9*d=xxxxxABCD】这是公式。由于9的乘积个位数都是唯一的,从D开始可以依次得到A的数字。
例题1:xxxxx4583
9*d=xxxxx4583,d=7。仅有7,D是3。
(9c+8d)*10+9*d=(9c+56)*10+63=(9c+56)*10+6*10+3=(9c+62)*10+3,c=4。仅当4时,C是8,下同。
(9b+32+56)*100+(36+56)*10+63=(9b+88)*100+92*10+63=(9b+88)*100+983=(9b+88)*100+9*100+83
=100*(9b+97)+63,b=2
(9a+16+32+56)*1000+(18+32+56)*100+(36+56)*10+63=(9a+104)*1000+11583=(9a+104)*1000+11*1000+583
=1000*(9a+115)+683,a=1
abcd=1247
例题2:xxxxx9026,楼主例
9*d=xxxxx9026,d=4
(9a+8b+8c+32)*1000+(9b+8c+32)*100+(9c+32)*10+36
(9c+32)*10+36=xxxxx9026,(9c+32)*10+10*3+6=(9c+35)+6,c=3
(9a+8b+24+32)*1000+(9b+24+32)*100+(27+32)*10+36
=(9a+8b+56)*1000+(9b+56)*100+626
(9b+56)*100+626=(9b+56)*100+100*6+26=100*(9b+62)+26,b=2
(9a+16+56)*1000+(18+56)*100+626=(9a+72)*1000+8026=(9a+72)*1000+1000*8+26
=(9a+80)+26,a=1
abcd=1234
计算得到的原数有无穷个,abcd的原数是xxxxxabcd。