数字型谜题或算法小节(7)

一、下图是一张 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除得余数。

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

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

数字型谜题或算法小节(7)

时间: 2024-11-05 11:57:59

数字型谜题或算法小节(7)的相关文章

jsp中遇到Integer的方法valueOf()和parseInt()的区别.前者要求是对象类型,后者是数字型字符串

他们有本质区别,Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了. 而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性 Integer.parseInt()把String 型转换为Int型, Integer.valueOf()把String 型转换为Integer

渗透学习笔记--基础篇--sql注入(数字型)

环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一.分析和查找注入点(1)知识点回顾如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入.也即是通过Get或者Post方式传进去的数据被单引号或者双引号包裹住.如果我们想要注入自己的payload(有效载荷)的话,则我们必须先闭合前面的单引号或者双引号,否则我们的数据始终会被当做成字符串来处理. 这种类型的注入点称为字符型注入点. (2)这次我们的把防御等级提升了一个层次,来逐步加强我们手工注入的能力以及开更多

oracle 非数字型转数字型

原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues, '9876543210.' || a.vital_signs_cvalues, '9876543210.'), 1, instr(translate(a.vital_signs_cvalues, '9876543210.' || a.vital_signs_cvalues, '987654321

将字符转成数字型

--将字符转换城数据-- CREATE OR REPLACE function CharToNumber(strNumber varchar2) RETURN NUMBER IS BEGIN RETURN (to_number(strNumber)); EXCEPTION WHEN others THEN RETURN (0); END ; / --调用-- SELECT CharToNumber(HHH) FROM bdlly.T10_XZMD; 将字符转成数字型

Sql注入的分类:数字型+字符型

Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以达到攻击的目的.主要是由于应用程序对用户的输入没有进行严格的过滤而造成的. 一.万能密码 在说sql注入分类之前,先来看一下万能密码的构成原理.万能密码是由于某些程序,通过采用判断sql语句查询结果的值是否大于0,来判断用户输入数据的正确性造成的.当查询之大于0时,代表用户存在,返回true,代表登

根据数字型样式或非数字型样式创建文件夹

2018-10-31 17:14:17  开始写 数字型 非数字型 1 import javax.swing.JFrame; 2 import javax.swing.JPanel; 3 import javax.swing.border.EmptyBorder; 4 import javax.swing.JLabel; 5 import javax.swing.JOptionPane; 6 7 import java.awt.Font; 8 import javax.swing.JTextFi

使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹

2018-11-05 20:57:00开始写 Folder.java类 1 import javax.swing.JFrame; 2 import javax.swing.JPanel; 3 import javax.swing.border.EmptyBorder; 4 import javax.swing.JLabel; 5 import javax.swing.JOptionPane; 6 7 import java.awt.Font; 8 import javax.swing.JText

0093 数字型 Number:整数、小数 、数字型进制、数字型范围、数字型三个特殊值

JavaScript 数字类型既可以保存整数,也可以保存小数(浮点数). var age = 21; // 整数 var Age = 21.3747; // 小数 数字型进制 最常见的进制有二进制.八进制.十进制.十六进制. // 1.八进制数字序列范围:0~7 var num1 = 07; // 对应十进制的7 var num2 = 019; // 对应十进制的19 var num3 = 08; // 对应十进制的8 // 2.十六进制数字序列范围:0~9以及A~F var num = 0xA

不使用burp suite-SQL注入-union注入(联合查询)-pikachu之数字型注入(post)

pikachu之数字型注入(post) 下面输入内容均为Post data内容 id=3'&submit=%E6%9F%A5%E8%AF%A2   ------报错 id=3 and 1=1&submit=%E6%9F%A5%E8%AF%A2   ---正常 id=3 and 1=2&submit=%E6%9F%A5%E8%AF%A2   ----报错 id=3 order by 3&submit=%E6%9F%A5%E8%AF%A2   ---报错 id=3 order