内容提要

高精

矩阵

筛法


先是高精除法

注意细节

高精度开方:神奇的竖式

以小数点为分界线,每两个位砍一刀

87654.321-->08|76|54|.32|1

大概就是先对第一位开方,然后相减,将上面的数乘二十,看看加多少再乘多少正好不能撑爆剩下的数,就在上面写几,重复操作就ok

原理是: (a*10+b)^2=a^2+2*a*10*b+b^2=a^2+(20*a+b)*b

竖式算开平方步骤:(如:把625开方)

(1)先把被开方的数由右到左每二位一组。(6,25)

(2)由左到右取每一组。(取的是6)

(3)取某数的平方,要比第一组数小,但某数+1的平方,要比第一组数大,这就是第一个开方值。(某数是2)

(4)把第一组数减去第一个开方值的平方,再取第二组数,构成余数。(6-2*2=2,余数为225)

(5)把第一个开方值*20,再加上估计的第二个开方值,它与第二个开方值相乘要比余数小,但把第一个开方值*20,再加上估计的第二个开方值+1,它与第二个开方值+1相乘要比余数大。(第二个开方值取5,2*20+5=45,45*5=225)

所以(625)^0.5=25

现在中考高考都不让带计算器了,试卷上出现的一些常见开方的数字都是直接提供给学生的。现在手工列竖式开方基本不再需要了,但是每每想起当时老师教过的列式开平方的方法,还是很骄傲的。

手工开平方的原理实际是很简单的,原理如下

(a+b)^2=a^2+2ab+b^2=a^2+(2a+b)*b

这里的a取10的倍数,b取个位数,如(10+2)^2=10^2+(2*10+2)*2=100+22*2=144,这是知道结果时的推算,如何给你一个数字,让你推算它的开平方值呢?

现在要对144开平方,那么估计所求的值为十几,因此可以写成(10+?)^2=10^2+(2*10+?)*?,这样猜这个?为2时,再代入计算,发现计算出的值正确。按此方法,可以列竖式进行计算。如果需要对2025进行开方处理,那么按两位两位进位,需要先对20求根,取5时,5*5>20,因此只能取4,也就是结果是四十几,即(40+?)^2=40^2+(2*40+?)*?,即减去40的平方1600后,2025还余下425,425再去除于8?(八十几),才能得到?(几),结论当然是85*5=425,因此2025开平方就是45。

。

快速幂

矩阵乘法

一个i行k列的矩阵乘一个k行j列的矩阵得到一个i行j列的矩阵

答案矩阵的第i,j个元素为A矩阵第i行第k个元素乘B矩阵第k行第j个元素,k是从1到m

就是一个矩阵的行乘另一个矩阵的列

代码:

矩阵快速幂常用于求解线性递推方程组

比如斐波那契数列的矩阵就是

1  1

1  0

[f[n],f[n-1]]*[矩阵]^k=[f[n+k],[n+k-1]]

矩阵快速幂基于以下的原理,即可以找到一个矩阵 M

使得 [F(n-1) F(n)]T* M = [F(n) F(n+1)]T

以斐波拉期数列为例:M = ((1 1) (1 0))

以此类推:

[F(0) F(1)]T* Mn = [F(n) F(n+1)]T

我们成功将一个递推式转化成了一个求矩阵幂的问题

利用快速幂算法可以将时间缩短为 O(d^3logn)

利用 FFT + 矩阵特征多项式的黑科技可以把时间进一步缩短到 O(dlogdlogn)

我们来试着写一下下面的矩阵:

F(n) = 7F(n-1) + 6F(n-2) + 5n + 4 * 3^n

先考虑转换前后的两个矩阵,肯定要有所有在转换中需要的

我们发现如果要从f[n-1]转换到f[n],要用到f[n-1],f[n-2],n,3^n,我们就先写上这些

然后发现n要转换到n+1就需要个1,再加上1就好了

[f[n-1,] f[n-2,] n, 3^n, 1]

[f[n], f[n-1], n+1, 3^(n+1) ,1]

然后按照递推式搞一搞就ok

高斯消元

高斯消元可以将一个矩阵变成一个上三角矩阵

在 OI 中一般用于两点:求解线性方程组(不常见) & 求线性基(常见)

然后搞一搞就行

注意判断无解和无穷解的情况

线性基常见问题:

如何求一堆数的异或和中第 K 大的值?

筛法

常见的埃拉托斯特尼筛,复杂度为 O(nlogn),优化后达到O(nlognlogn)

欧拉筛

让每个合数被他的最小的质因子筛掉

欧拉筛还可以用来维护一些复杂的函数值

如:逆元、一个数的质因数分解中最大的指数的值

积性函数:对于所有互质的 x 和 y,F(x * y) = F(x) * F(y)

完全积性函数:对于所有 x 和 y ,F(x * y) = F(x) * F(y)

常见的积性函数:

欧拉函数 φ(n) :不超过 n 与 n 互素的数的个数

若

则

怎么用程序求φ?

欧拉筛,筛数i,选取一个素数p,把p*i筛掉(p<=e[i])

此时会检查i的最小素数因子是不是p

所以会有两种可能

1.i和p互素

Phi[i*p]=phi[i]*phi[p]

2.i的最小素因子刚好是p

Phi[i*p]=phi[i]*p

φ[i]=(p1-1)*p1^(q1-1)+(p2-1)*p2^(q2-1)......(pn-1)*pn^(qn-1)

对于莫比乌斯函数也是差不多

  1. i和p互素  mul[i*p]=mul[i]*(-1)
  2. i的最小素因子刚好是p  mul[i*p]=0

约数个数

约数和

求f(n)=[n/1]+[n/2]+---+[n/n]的值

  1. k<sqrt(n)的时候,k只有sqrt(n)种取值

  所以n div k的取值最多只有sqrt(n)种

  div是整除

  2.k>sqrt(n)的时候

  n div k 显然小于sqrt(n)

  所以它的取值也只有sqrt(n)种

表面上复杂度是o(n),但是由于我们是跳着走的,所以复杂度为o(2√n)

qbzt day2 下午的更多相关文章

  1. PKUSC 模拟赛 day2 下午总结

    终于考完了,下午身体状况很不好,看来要锻炼身体了,不然以后ACM没准比赛到一半我就挂掉了 下午差点AK,有一道很简单的题我看错题面了所以没有A掉 第一题显然是非常丝薄的题目 我们很容易通过DP来O(n ...

  2. 云栖大会day2 下午

    下午内容普遍比较水 参与了intel的宣讲会,都能把人听睡着了 又回来听了开发者宣讲会 讲了人的成才选择,造势之人 顺势之人 逐流之人 我认为,跟人的能力关联不大,跟眼界关联很大, flink 参与到 ...

  3. 2016.10.30 济南学习 Day2 下午 T1

    他 [问题描述] 一张长度为N的纸带,我们可以从左至右编号为0 − N(纸带最左端标号为 0).现在有M次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行 ...

  4. 清北澡堂 Day2 下午 一些比较重要的数论知识整理

    1.欧拉定理 设x1,x2,.....,xk,k=φ(n)为1~n中k个与n互质的数 结论一:axi与axj不同余 结论二:gcd(axi,n)=1 结论三:x1,x2,...,xk和ax1,ax2, ...

  5. Day2下午

    虽然成绩不太好,但有点进入状态了.期望200 实际160,忘记加判断了. T1 洗澡[问题描述]你是能看到第一题的friends 呢.——hja洗澡的地方,有一段括号序列,将一个括号修改一次需要1的代 ...

  6. Day2下午解题报告

    预计分数:100+100+30=230 实际分数:100+100+30=230人品爆发&&智商爆发&&手感爆发 T3数据好水,,要是把数组开大一点的话还能多得10分,, ...

  7. qbzt day6 下午 模拟赛

    我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少.   话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... ...

  8. qbzt day5 下午

    农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的奶牛们享 ...

  9. qbzt day4 下午

    有向图的强连通分量 强联通:两个点之间可以互相到达 如果某个图任意两个点都是强联通的,那么称这个图强联通 如果一个图的子图是强联通的,那么称这个图是强联通子图 一个图的极大强联通子图被称作强连通分量 ...

随机推荐

  1. 05: 常用反扒机制 & 解决方法

    1.1 常用反扒机制   参考博客:https://blog.csdn.net/python36/article/details/90174300 1.header  浏览器的请求头 header中添 ...

  2. 封装 多态 类的约束 super

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  3. Scrapy 教程(七)-架构与中间件

    Scrapy 使用 Twisted 这个异步框架来处理网络通信,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求. Scrapy 架构 其实之前的教程都有涉及,这里再做个系统介绍 Engin ...

  4. 修改jar包中class文件

    某日,想要更改jar包中的某个class文件,有无rar无法解压jar文件,故找到如下方式进行操作 1.解压某个jar包:在需要解压的jar包目录下,打开命令行(cmd),输入如下命令,输入:C:\j ...

  5. asp.net后台cs中的JSON格式变量在前台Js中调用方法

    //后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  6. 使用NPOI读取Excel数据并写入SQLite

    首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格 ...

  7. linux Apache 的安装

    rpm –qa httpd 查询是否安装了 Apache rpm –e 包名卸载安装程序 rpm –e --nodeps 包名卸载安装程序不产生依赖 #检查是否安装有依赖库 yum install – ...

  8. Java Web学习总结(4)HttpServletResponse

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.获取网页提交过来的数据,只需要找request对象就行了.要向网 ...

  9. 解决tcp粘包

    粘包现象:只有tcp协议才会产生粘包,udp协议不会产生粘包 1.tcp协议下,发送端会采用一个优化算法(Nagle算法),把间隔时间短,数据比较小的包合并到一起,再一起发送过去,造成粘包 2.发送端 ...

  10. 【转】linux lost+found文件夹

    lost+found这个目录一般情况下是空的,当系统非法关机后,如果你丢失了一些文件,在这里能找回来 用来存放fsck过程中部分修复的文件的 如果你运行fsck命令(文件系统检查和修复命令),它也许会 ...