数字型谜题或算法小节

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、下图是一张10 * 10的数字表格,表格的对角线上是一系列的重复的数字,尝试心算出表中所有的数字总和。

答案:数字总和是1000。

像是这样的问题,我想很多人在直觉上就会想到——找规律,的确,只要找到规律、之后的事情就变得再简单不过了。

第一种方法:根据正方形的对称性来计算。

左上角和右下角数字之和为20,平均数为10(如:1 + 19,2 + 18,3 + 17,4 + 16等等),也就是说表格中的数字

都换成10,其总和也不不变。即数字总和为10 * 10 * 10 = 1000。

第二种方法:逐行或逐列来计算。

第一行的数字总和= 1 + 2 + 3 + … + 9 + 10 = ( 1 + 10) * 10 / 2 = 55。

第二行的数字总和= 55 + 10。因为第二行的每一个数字都比第一行大1。

第三行的数字总和= 55 + 20。

依次类推…

第十行的数字总和= 55 + 90。

所有数字总和= 55 + ( 55 + 10 ) + ( 55 + 20 ) + ( 55 + 30 ) + … + ( 55 + 90 ) = 55 * 10 + ( 10 + 90 ) * 9 / 2 = 1000。

由此可见,简单的数学求和公式在此却起到了巨大作用。

其求和公式原型为:

1 + 2 + 3 + … + n - 1 + n= n(n + 1)/2

变形,求前n个正偶数的和:

2 + 4 + 8 + … + 2n = 2(1 + 2 + … + n) = n(n+ 1)

变形,求前n个正奇数的和:

1 + 3 + 5 + … + (2n - 1) = (1 + 2 + 3 + … + (2n -1) + 2n ) - (2 + 4 + 6 + … + 2n) = 2n(2n + 1) / 2 - n(n + 1) = n2

另外一个很重要的公式:2个各个次幂之和:

20 +21+ 22+ … + 2n= 2n+1- 1。

二、求任意两个18位整数的乘积、其结果末尾有多少个连续的数字0。

注意:求的是结果的末尾有多少个连续的数字0.

我们假设已经计算出两个数的乘积为21601..800000000。

结果可以换种表达方式为:21601..8 * 108

又因为10只能分解为2 * 5,所以也可以表达为:21601..8 * (2 * 5)8

所以我们可以利用如下方式来计算结果:

1、将两个乘数分解质因数(只分解2或5)。

2、分别计算质因数2和5的个数。

3、Min(质因数2的个数,质因数5的个数)结果即为所求。

上面说的是加法和乘法,下面说一个关于取余的。

三、求任意100位的整数对7取余的结果。

想一想,如果我们用笔去计算该问题,我们会怎么做呢?——除法竖式。

没错,我们将用最原始的,小学生都会除法竖式来解决该问题。

方法描述:

先取出100位数的第一位,被7除得余数(余数可能为0)。

用余数和100位数的第二位,组成一个两位数或一位数(因为余数可能为0),然后被7除得余数。

依次类推,最后所得余数即为所求。

好了,好好体味一下数学的魅力吧。欢迎大家给予补充~

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航