数字型谜题或算法小节
一、下图是一张 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个各个次幂之和:
2^0 +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 的个数。
3、Min(质因数2的个数,质因数5的个数)结果即为所求。
上面说的是加法和乘法,下面说一个关于取余的。
三、求任意 100位的整数对7取余的结果。
想一想,如果我们用笔去计算该问题,我们会怎么做呢?——除法竖式。
没错,我们将用最原始的,小学生都会除法竖式来解决该问题。
方法描述:
先取出100位数的第一位,被7除得余数(余数可能为0)。
用余数和 100位数的第二位,组成一个两位数或一位数(因为余数可能为0),然后被7除得余数。
依次类推,最后所得余数即为所求。
好了,好好体味一下数学的魅力吧。欢迎大家给予补充~
转载于:https://www.cnblogs.com/08shiyan/p/3756787.html
数字型谜题或算法小节相关推荐
- JavaScript中的(字符串,数字型,布尔型)是如何实现类型转换的?
转换为字符型 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF- ...
- oracle 非数字型转数字型
原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues ...
- JavaScript实现切换数字的符号switchSign算法(附完整源码)
JavaScript实现切换数字的符号switchSign算法(附完整源码) switchSign.js完整源代码 switchSign.js完整源代码 /*** Switch the sign of ...
- C++使用位操作将数字乘以7的算法实现(附完整源码)
C++使用位操作将数字乘以7的算法实现 C++使用位操作将数字乘以7的算法实现完整源码(定义,实现,main函数测试) C++使用位操作将数字乘以7的算法实现完整源码(定义,实现,main函数测试) ...
- C++确定数字的奇偶校验的算法实现(附完整源码)
C++确定数字的奇偶校验的算法实现 C++确定数字的奇偶校验的算法实现完整源码(定义,实现,main函数测试) C++确定数字的奇偶校验的算法实现完整源码(定义,实现,main函数测试) #inclu ...
- 处理字符串_7_判断字符串是字符串数字型
判断字符串是字符串数字型 需求描述 需求:检索temp_str data表的字段data是字符串数字类型的记录这里如果都是字符串或者数字的也符合条件. 解决方法:这里通过translate.repla ...
- SOL注入——基于联合查询的数字型GET注入(二)
本章目的 普及数字型GET注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程. 实验环境 攻击机:Pentest-Atk (1)操作系统:Windows10 ( ...
- mysql 数值型注入_SQL注入之PHP-MySQL实现手工注入-数字型
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎 ...
- 渗透学习笔记--基础篇--sql注入(数字型)
环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一.分析和查找注入点 (1)知识点回顾 如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入.也即是通过Get或者 ...
最新文章
- Markdown快速上手
- 递归方式-全排列生成算法
- Python 中的range,以及numpy包中的arange函数
- 如何dos中查看当前MySQL版本信息?
- qvalue: Check that you have valid p-values or use a different range of lambda
- 基于jsp+servlet的 新闻管理系统。
- acm 算法竞赛 时间
- ubuntu安装pgadmin4
- 安装CAD2006出现html,Win7系统安装cad2006出现已终止CAD2006-Simplifieng安装怎么办
- 优盘里文件夹变成html,U盘里面的文件跟文件夹突然乱码了怎么办
- Enterprise Architect使用教程
- 计算机高级培训教师感言,教师感言,句句经典
- QT 和Ogre Demo
- impala添加kerberos认证
- 2020-12-20|西瓜更新Cookies ttwid获取方法
- 石家庄康业软件科技有限公司
- Android中级控件介绍(五)
- ubuntu9.04最新问题解答
- 【Java】工作流框架JBPM
- 计算机测试系统应用实践,计算机测试系统应用实践