4.4清北学堂Day1 主要内容:数论,数学
Day 1;
1、常见的高精
- 输入输出都用字符数组;
- 字符数组的实际长度用strlen()来求;
- 运算时倒序运算,把每一个字符都-‘0’

- 进位的处理上也要注意;
- 小数减大数时先判断大小然后加负号

- 只能用while不能用if 因为if只能去掉一个0,while去掉所有的前导零
高精减:
高精乘;
通过逐位相乘,进完位之后输出


2、特殊处理
高精数除以单精数

压位技巧:

把对十取模变成了%10000或者更长,对加和减没啥用,但是乘除的时候能够大量提高速度,复杂度为o(n/m);
在int下可以最多压9位,能够很好的减少时间
2、模意义下运算
模7意义下的运算
模意义下运算这一块比较难,主要还是日后求逆元的时候比较费劲
3*3=2 4+5=2 4-5=6
即3*3 mod 7=2
无除法运算(但可以用逆元来代替)
满足基本的交换律、分配率、结合律
对中间结果取模不影响最终答案 ;
5*5*5 mod 7 = 6
(5*5 mod 7)^5 mod 7 = 4*5 mod 7
快速幂
计算a^b%p=?
暴力O(b)
两种解决思路:
分治
分治代码pow(a,b)%c

快速幂
快速幂代码

b&1指二进制下b的第一位
费马小定理
t=b*a^(p-1)=b
t=b*1=b
/a=*a^(p-2);
用费马小定理的方法来代替/a;

PS!!!!!
O(1)计算组合数:

第三步进行了拆分,把两个阶乘拆开了
最后发现组合数只与n!、(n!)^(p-2)
一个很省时间的模板。。。。。。但是不习惯用

#define clr(a) memset(a,0,sizeof(a))
清零
Ps:快读比scanf快4倍左右
GCD和LCM
没什么可讲的,唯一注意的是用GCD求LCM要注意顺序。。。。前一种有可能会爆

筛素数
弱智筛法就不贴了
下面是埃氏筛
先补一个很有意思的东西
1+1/2+1/3+1/4+....+1/n=log n
线性筛代码

欧拉函数

对于大范围内求质因数个数硬解肯定太慢,用线性筛优化
先用线性筛找到每一个数的最小质因子(rec[i])

分析:第二个if里,当i的指数>=2时就可以直接乘,(主要是看rec[i]对于phi[i]的贡献,例如一次幂二次幂等)当指数>2时,说明i因数分解式当中有多个该质因子,那么我们就可以直接相乘。
例如:
36=2^2*3^2
Phi[36]=phi[18]*2
=2*1*3*2=6;=12
18=2*3^2
Phi[18]=2^(1-1) * (2-1) * 3^(2-1) * (3-1)
=1*1*3*2=6;
否则在(i/rec[i])基础上乘该数最小质因子的欧拉函数(即rec[i]-1)。
例如phi[15]和phi[30]
Phi[15]=(3-1)*(5-1)=8
Phi[30]=(2-1)* (3-1)*(5-1)=8
=phi[30/2]*(2-1)=8
通过对欧拉函数的应用,我们可以慢慢的发现这条定理:
欧拉定理

矩阵
1、
- 一个m×n的矩阵就是m×n个数排成m行n列的一个数阵
- 一个m×p的矩阵A 乘 一个一个p×n的矩阵B 得到一个矩阵一个m×n的矩阵AB
- 其中

乘法的时候,第i行第j列就等于原本两个矩阵里头前矩阵i行和后矩阵j列全部元素对应相乘
- 注意!矩阵乘法满足结合律、分配率
- 不满足交换律
应用:
求斐波那契数列第k项的值
Fi表示斐波那契第i项
0 1 f1 f2 f2
1 1 f2 f1+f2 f3
0 1 K-1次幂 f1 fk
1 1 f2 fk+1
代码实现

ans起初是单位矩阵
计算f(n) = 4f(n-1) – 3f(n-2) + 2f(n-4) 的第k项

套模板,先找一个矩阵看能不能使得前矩阵通过运算变成后矩阵,可以通过在前(n-1)行用01来求解,最后一行按题目要求的系数填入的方法
邻接矩阵
表示第i行的点能不能到第j个点上
比如

可以得到
0 1 1 0
0 0 1 1
0 0 0 0
0 0 0 0
矩阵的k次幂表示走几步能到达
高斯消元
1、 应用场景:解齐次线性方程组
例:
解齐次线性方程
2x + y - z = 8
-3x - y + 2z = -11
-2x + y + 2z = -3
可以得到
2 1 -1 8
-3 -1 2 -11
-2 1 2 -3
常规的高斯消元法只需要循环(或者递归)求解即可
有一个很重要的区别
行列式消元的时候,当a[i][i]==0的时候,对该列进行交换;
矩阵消元的时候,当a[i][i]==0的时候,则i++;
代码实现:


行列式 emmmm其实应该在矩阵前头啊
1.把齐次线性方程组的矩阵拿出来构成一个行列式,若值为0则无解或无穷多解,非0则有解
2.解法:用高斯消元消成上三角就行,或者降阶求解
矩阵逆元:
若矩阵B*A=I则称B为A的左逆元
有逆元的前提:矩阵行列式不为0
求左逆元:对于A矩阵的第二行减去第一行,其实就是对于一个换单位矩阵在单独的某一行进行系数变换
左逆元其实就是高斯消元过程中的矩阵连乘
同理,右逆元是对列进行系数变换
矩阵树定理
- 一个图的邻接矩阵G:对于无向图的边(u,v),G[u][v]++,G[v][u]++
一个图的度数矩阵(有多少条边与之相连,那么他的度数就是多少)D:对于无向图的边(u,v),D[u][u]++,D[v][v]++
- 而通过这两个矩阵就可以构造出图G的基尔霍夫矩阵:C=D-G.
- Matrix Tree定理:将图G的基尔霍夫矩阵去掉第i行和第i列(i可以取任意值,可以证明所得到的结果相同),得到(n-1)*(n-1)的矩阵,对这个矩阵进行行列式的值求解,abs(det(A))即为图G的生成树个数。

4.4清北学堂Day1 主要内容:数论,数学的更多相关文章
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...
- 五一培训 清北学堂 DAY1
今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...
- 2017 五一 清北学堂 Day1模拟考试结题报告
预计分数:100+50+50 实际分数:5+50+100 =.= 多重背包 (backpack.cpp/c/pas) (1s/256M) 题目描述 提供一个背包,它最多能负载重量为W的物品. 现在给出 ...
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
- 济南清北学堂游记 Day 1.
快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...
- 7月清北学堂培训 Day 3
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...
- 五一培训 清北学堂 DAY4
今天上午是钟皓曦老师的讲授,下午是吴耀轩老师出的题给我们NOIP模拟考了一下下(悲催暴零) 今天的内容——数论 话说我们可能真的是交了冤枉钱了,和上次清明培训的时候的课件及内容一样(哭. 整除性 质数 ...
- 北京大学冯哲清北学堂讲课day1
贪心方案: 答案是第三个策略 二分的一个重点是有顺序性,只有满足这个件才可以二分判断区间,否则你得自己构造顺序. 洛谷跳石头同题: 首先,我们要最小化最大跳远距离 代码如下(此题) #include& ...
随机推荐
- Android EditText常用属性
一.EditText介绍 ①EditText是一个输入框,在Android开发中是常用的控件.也是获取用户数据的一种方式. ②EditText是TextView的子类,它继承了TextView的所有属 ...
- Mac上webstorm与git仓库建立连接
1.打开Mac终端,输入$ cd ~/.ssh检查.ssh文件是否存在($在终端中存在,不需要自己输入),不存在,进行步骤2 2.如果没有安装ssh文件,输入命令$ssh -v,安装ssh文件,成功时 ...
- 会话固定攻击 - yxcms session固定漏洞
目录 会话固定攻击 e.g. yxcms session固定攻击 分析 了解更多 会话固定攻击 Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他 ...
- MySQL 基础知识梳理学习(三)----InnoDB日志相关的几个要点
1.InnoDB的特点 :(1)Fully ACID (InnoDB默认的Repeat Read隔离级别支持):(2)Row-level Locking(支持行锁):(3)Multi-version ...
- 前后端分离djangorestframework——ContentType组件表
ContentType ContentType其实django自带的,但是平时的话很少会用到,所以还是放在Djangorestframework这个部分 作用: 在实际的开发中,由于数据库量级大,所以 ...
- Java 位运算符和 int 类型的实现
Java 位运算符和 int 类型的实现 其他运算符 # 算术运算符 +.-.*./.++i.i++.--i.i-- # 关系运算符 ==.!=.>.<.>=.<= # 逻辑运 ...
- jenkins乱码解决问题
1.jenkins控制台线上乱码解决 系统管理——系统设置,添加编码环境变量 zh.CH.UTF-8 2.java启动后,tomcat日志显示乱码,原因是环境变量没有带过去,因此shell脚本头部需要 ...
- 【转】Android 增,删,改,查 通讯录中的联系人
一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission. ...
- day 12 装饰器
nonlocal关键字 # 作用:将 L 与 E(E中的名字需要提前定义) 的名字统一# 应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值# 案例:def outer(): n ...
- Skyline 7 版本TerraExplorer Pro二次开发快速入门
年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...