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

快速幂:

思想:大问题化小问题

\[x^n-->(x^(n/2))^2
\]

//快速幂_递归
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。

\[gcd(a,b)*lcm(a,b)==a*b
\]

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 重点笔记的更多相关文章

  1. 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))

    qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...

  2. 清北学堂—2020.1提高储备营—Day 3(图论初步(一))

    qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(图.图的存储方式.最小生成树的定义) 总知识点:图论 前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从 ...

  3. 清北学堂 2020 国庆J2考前综合强化 Day5

    目录 1. 题目 T1 a 题目描述 Sol T2 b 题目描述 Sol T3 c 题目描述 Sol T4 d 题目描述 Sol 2. 算法 - 贪心 & 数学 1. 贪心 2. 数学 2.1 ...

  4. 清北学堂—2020.1提高储备营—Day 4 morning(数论)

    qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一 ...

  5. 清北学堂—2020.1提高储备营—Day 3(图论初步(二))

    qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...

  6. 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)

    qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...

  7. 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)

    qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...

  8. 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)

    qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...

  9. 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)

    qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...

随机推荐

  1. template_homepage

    homepage用到的方法 使用 {% for ... in ...%}  加 {% endfor %} 实现循环结构 举例:  {% for post in posts %} <p style ...

  2. Go语言 命令行解析(一)

    命令行启动服务的方式,在后端使用非常广泛,如果有写过C语言的同学相信不难理解这一点!在C语言中,我们可以根据argc和argv来获取和解析命令行的参数,从而通过不同的参数调取不同的方法,同时也可以用U ...

  3. 并发系列64章(TPL 数据流)第七章

    前言 什么是TPL?全称:transmission control protocol 传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务. 然后思维方式回到为什么有这个TPL 数据流上 ...

  4. not found 什么时候触发

    eq: BEGIN        DECLARE EXIT HANDLER FOR NOT FOUND SET o_state = 999;         select count(1) into ...

  5. 03-css3中的3D转换

    一.CSS3-3D转换 1.3D 特点:近大远小,物体和面遮挡不可见 1.1三维坐标系 x 轴:水平向右 -- x 轴右边是正值,左边是负值 y 轴:垂直向下 -- y 轴下面是正值,上面是负值 z ...

  6. Netty 中的异步编程 Future 和 Promise

    Netty 中大量 I/O 操作都是异步执行,本篇博文来聊聊 Netty 中的异步编程. Java Future 提供的异步模型 JDK 5 引入了 Future 模式.Future 接口是 Java ...

  7. 最长上升子序列 HDU 1025 Constructing Roads In JGShining's Kingdom

    最长上升子序列o(nlongn)写法 dp[]=a[]; ; ;i<=n;i++){ if(a[i]>dp[len]) dp[++len]=a[i]; ,dp++len,a[i])=a[i ...

  8. Flask接口开发过程中的心得2019.10.03

    完善了一下慕课网实战中的post接口开发,得到了一些进步: 代码如下: #coding=utf-8 from flask import Flask from flask import request ...

  9. asp.net core webapi Session 内存缓存

    Startup.cs文件中的ConfigureServices方法配置: #region Session内存缓存 services.Configure<CookiePolicyOptions&g ...

  10. testlink的api

    testlink可以做很多你想象得到的事情,如API测试参数管理,Excel导入导出,快速模板创建测试用例,集成Jenkins. TestLink API第三方库: TestLink-API-Pyth ...