zoukankan      html  css  js  c++  java
  • 数字型谜题或算法小节

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



    答案:数字总和是 1000

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

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

    左上角右下角数字之和为 20,平均数为10如: 1 + 19 2 + 18 3 + 174 + 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个各个次幂之和:

    2^+2^1 + 2^2 + … + 2^n = 2^(n+1) - 1

     

     

     

     

     

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

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

     

     

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

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

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

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

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

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

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

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

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

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

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

    方法描述:

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

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

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

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

  • 相关阅读:
    前端基础进阶(四)-让你一分钟就看懂的作用域和作用域链
    前端基础进阶(三)-史上最详细的变量对象详解
    前端基础进阶(二)-知识点解析最精炼最详细
    前端基础进阶(一):内存空间详解-月薪5万
    知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行,真的
    学习web前端的免费12个学习网站,等你来撩
    一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!
    零基础的同学看过来,如何系统学习前端
    这是那些大佬程序员常用的学习java网站,这就是别人薪资上万的原因
    Debug outlook add-in (office.js) 小技巧
  • 原文地址:https://www.cnblogs.com/08shiyan/p/3756787.html
Copyright © 2011-2022 走看看