清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记
qbxt Day 1 morning 重点笔记
——2020.3.8 济南 主讲:钟皓曦
1
正数%负数==正数
负数%正数==负数
负数%负数==负数
a%b的答案的符号取决于a的符号。
2
快速幂:给定x,y,p,求xy%p,0<=x,y,p<=109
常规,(不够快):
//O(i)算法,非快速幂
int ans=1;
for(int i=1;i<=y;i++){
ans=(long long)ans*x%p;
}
int ans=1;
for(int i=1;i<=y;i++){
ans=(1ll*ans)*x%p;
//1ll指long long下的1,可以将int ans转换为long long ans
}
int ans=1;
for(int i=1;i<=y;i++){
ans=(0ll+ans)*x%p;
}
//10^8可以在1s中运行完,而这种代码在最坏情况下为10^9
快速幂:
思想:大问题化小问题
\]
//快速幂_递归
inline int quick_pow(int x,int y,int p){
if(y==0) return 1; //x^0==1
int ans=quick_pow(x,y>>1,p);
//y>>1==y/2;
ans=1ll*ans*ans%p;
if(y%2==1) z=1ll*ans*x%p;
return ans;
}
3
最大公因数,最小公倍数
gcd(a,b):找到一个最大的g,使g|a,g|b。
lcm(a,b):找到一个最小的l,使a|l,b|l。
\]
4
高精度
数的存储:
struct Edge{
int n,z[2333];
//z[1]个位,z[2]十位,以此类推
//n表示有n位
Edge{
n=1;
memset(a,0,sizeof(z));
}
inline void init(){ //读入高精度整数
scanf("%s",s+1);
int len=strlen(s+1);
reverse(s+1,s+len+1); //把给定区间进行反转
n=len;
for(int i=1;i<=n;i++){
z[i]=s[i]-'0';
}
}
inline void print(){ //输出高精度整数
for(int i=n;i>=1;i--) printf("%d",z[i]);
}
};
计算a是否小于b
bool operator<(const Edge &a,const Edge &b){
//operater< 指重载小于运算符
//为了计算a是否小于b
if(a.n<b.n) return a.n<b.n;
for(int i=a.n;i>=1;i--){
if(a.z[i]!=b.z[i]) return a.z[i]<b.z[i];
}
return false;
}
计算a小于等于b
bool operator<=(const Edge &a,const Edge &b){
if(a.n<b.n) return a.n<b.n;
for(int i=a.n;i>=1;i--){
if(a.z[i]!=b.z[i]) return a.z[i]<b,z[i];
}
return true;
}
高精度加法
Edge operator+(const Edge &a,const Edge &b){
Edge c;
c.n=max(a.n,b.n);
for(int i=1;i<=c.n;i++) c.z[i]=a.z[i]+b.z[i];
for(int i=1;i<=c.n;i++){
c.z[i+1]+=c.z[i]/10;
c.z[i]=c.z[i]%10;
}
if(c.z[n+1]!=0) c.n++;
return c;
}
高精度乘法
Edge operator*(const Edge &a,const Edge &b){
Edge c;
c.n=a.n+b.n;
for(int i=1;i<=a.n;i++){
for(int j=1;j<=b.n;j++){
c.z[i+j-1]+=a.z[i]*b.z[j];
}
}
for(int i=1;i<=c.n;i++){
c.z[i+1]+=c.z[i]/10;
c.z[i]=c.z[i]%10;
}
while(c.n!=1&&c.z[c.n]==0) c.n--;
return c;
}
luogu:
1226,1143,1017
清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记的更多相关文章
- 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))
qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...
- 清北学堂—2020.1提高储备营—Day 3(图论初步(一))
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(图.图的存储方式.最小生成树的定义) 总知识点:图论 前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从 ...
- 清北学堂 2020 国庆J2考前综合强化 Day5
目录 1. 题目 T1 a 题目描述 Sol T2 b 题目描述 Sol T3 c 题目描述 Sol T4 d 题目描述 Sol 2. 算法 - 贪心 & 数学 1. 贪心 2. 数学 2.1 ...
- 清北学堂—2020.1提高储备营—Day 4 morning(数论)
qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一 ...
- 清北学堂—2020.1提高储备营—Day 3(图论初步(二))
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...
- 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)
qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...
- 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)
qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...
随机推荐
- 7.5 this关键字的使用;标准学生类的编写 、构造方法的格式
/** 学生类** 起名字我们要求做到见名知意.* 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进.** 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则. * 我们 ...
- hadoop(五)scp命令copy文件和配置(完全分布式准备二)|7
机器的克隆参考centos7克隆ip|机器名|映射关系|别名配置(hadoop完全分布式准备一) 那么问题来了,如果我们有30台机器,之间可以互相访问,那我们如何快速安装配置环境如jdk hadoop ...
- STC15F2K60S2串口通信的应用。
前言:由于不可抗拒因素,初始的STC12C5A60S2芯片由于无法进行烧录(...因为没带有锁紧座的开发板),暂且使用STC15F2K60S2芯片.. 一 串行通信概述: 串口通信有SPI IIC U ...
- tf.train.MomentumOptimizer 优化器
tf.train.MomentumOptimizer( learning_rate, momentum, use_locking=False, use_nesterov=False, name='Mo ...
- 表字段或表名出现Mysql关键字或保留字导致问题 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have
MySQL 5.7使用的关键字和保留字 https://dev.mysql.com/doc/refman/5.7/en/keywords.html 当我们建表的时候如果使用了关键字或者保留字,则在执行 ...
- Mysql 错误 Connection is read-only 解决方式
环境Spring+Mybatis <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.s ...
- 【简单了解系列】从基础的使用来深挖HashMap
HashMap定义 说的专业一点,HashMap是常用的用于存储key-value键值对数据的一个集合,底层是基于对Map的接口实现.每一个键值对又叫Entry,这些Entry分散的存储在一个由数组和 ...
- idea创建springboot工程,总出现响应超时问题,或者无法连接http://start.spring.io导致创建失败
问题描述如下: idea创建springboot工程,总出现响应超时问题,或者无法连接http://start.spring.io导致创建失败 从我出现此类问题几次的解决方案 依照解决效率分为一下三种 ...
- echarts使用笔记
1.解决列文字隔开问题,及文字太长问题解决. yAxis: [ { type : 'category', data : message.data[0].dataone, axisLabel: { in ...
- 从hfctf学习JWT伪造
本文作者:Ch3ng easy_login 简单介绍一下什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519) ...