数学补天 By cellur925
质数
bool prime(int q)
{
if(q==||q==) return ;
if(q==) return ;
if(q%!=||q%!=) return ;
int cnt=sqrt(q);
for(int i=;i<=cnt;i+=)
if(q%!=||q%(i+)!=) return ;
return ;
}
//埃氏筛 筛出1~n的素数
void prime_select()
{
for(int i=;i<=n;i++)
{
if(vis[i]) continue;
printf("%d\n",i);
for(int j=n;j<=n/i;j++) vis[i*j]=;
}
}
线性筛还是要学的qwq(真香),它的原理是每个合数会被它的最小质因子筛一次,利用了当前已经筛出的质数。复杂度真·O(N)
//线性筛
void prime_select()
{
//v[]记录下标数的最小质因子 初值为0
for(int i=;i<=n;i++)
{
if(v[i]==) v[i]=i,prime[++m]=i;
for(int j=;j<=m;j++)
{//i是比prime[j]更小的质因子or超出n的范围
if(prime[j]>v[i]||prime[j]>n/i) break;
v[i*prime[j]]=prime[j];
}
}
}
//质因数分解--基于算术基本定理 复杂度O(根号n)
void divide()
{
for(int i=;i<=sqrt(n);i++)
if(n%i==)
{
p[++m]=i;c[m]=;
while(n%i==) n/=i,c[m]++;
}
if(n>) p[++m]=n,c[m]=;
for(int i=;i<=m;i++)
printf("%d^%d\n",p[i],c[i]);
}
丢几个例题跑嘤嘤嘤
例题1 LuoguP1865 A%B Problem ---(本博客开通不久的旧文)
因为数据范围较水,仅1e6,所以我们可以先使用线性筛筛出素数。区间个数用前缀和维护。它珂以当做一个练线性筛的不错模板题。
例题2 UVA10140 Prime Distance --(题解一篇)
我们知道,任意一个合数x一定包含不超过sqrt(n)的质因子。
所以我们就筛出2~sqrt(R)之间的所有素数,用他们来标记全部范围内的合数。最后没被标记的数就是质数,比较相邻的质数位置取最大。
例题3 阶乘分解 没有题面,口胡一下。
把N!分解质因数,按算术基本定理的形式输出。(N为1e6级别)
N!中质因数p的个数就等于1~N每个数含质因子p的个数之和。其他...详见lyd书p131,不会用LaTex,懒得打了...
时间复杂度O(Nlogn)
约数
// 这样写书式的复习我肯定干不完...以后会简洁一点...(真香)
- 基于算术基本定理,N的正约数集合个数为(a1+1)*(a2+1)*(a3+1)*........*(an+1)(基于乘法原理)($a_i$为算术基本定理中的各指数)
- 求1~N每个数的正约数集合--倍数法
//求1~N每个数的正约数集合--倍数法
void work()
{
vector<int>fac[];
for(int i=;i<=n;i++)
for(int j=;j<=n/i;j++)
fac[i*j].push_back(i);
}
复杂度为O(N+N/2+N/3+N/4+...+N/N)=O(NlogN)(调和级数)
例题1 LuoguP1463反素数
例题2 LuoguP2261余数之和
- $gcd(a,b)*lcm(a,b)=a*b$
int gcd(int a,int b)
{
return b ? gcd(b,a%b) : a;
}//辗转相除
int gcd(int a,int b)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
return a;
}//更相减损
- 欧拉函数:1~n中与n互质的数的个数
- 1~n中与n互质的数的个数为$n*φ(n)/2$
- 若a,b互质,则φ(a)φ(b)=φ(ab)。
- 若n为质数,φ(n)=n-1
void phi()
{
phi[]=;
for(int i=;i<=n;i++) phi[i]=i;
for(int i=;i<=n;i++)
if(phi[i]==i)
for(int j=i;j<=n;j+=i)
phi[j]=phi[j]/i*(i-);
}
- 费马小定理:当p为质数时候, a^(p-1)≡1(mod p)
- exgcd:https://www.cnblogs.com/nopartyfoucaodong/p/9514767.html
组合数学
- 求法:https://www.cnblogs.com/nopartyfoucaodong/p/9543206.html
- 圆排列:https://www.cnblogs.com/nopartyfoucaodong/p/9751569.html
- 第二类strling数:https://www.cnblogs.com/nopartyfoucaodong/p/9690393.html
- 卡特兰数:https://www.cnblogs.com/nopartyfoucaodong/p/9752461.html
数学补天 By cellur925的更多相关文章
- Luogu P2327 [SCOI2005]扫雷【递推/数学】By cellur925
题目传送门 推了好久啊.看来以后要多玩扫雷了qwq. 其实本题只有三种答案:0.1.2. 对于所有第一列,只要第一个数和第二个数确定后,其实整个数列就确定了,我们可以通过这个递推式得出 sec[i-] ...
- NOIp 2014 解方程 【数学/秦九韶算法/大数取膜】By cellur925
题目传送门 题意:求高次方程的解及其个数.其中 1° 我们知道,高次方程是没有求根公式的.但是利用逆向思维,我们可以进行“试根法”,因为题目中给出了所求根的范围.但是多项式系数过于吓人,达到了sxbk ...
- 茅台【思维/数学/剪枝】By cellur925
题目传送门 给你\(n\)根木棍,问有多少种方法,使得选出的三根木棍能组成三角形. 开始想要用搜索的,但是写着写着卡壳了(?),于是改用贪心,开始对拍,觉得很稳,只是最后两个数据可能有点卡.很第一题难 ...
- Luogu P2158 [SDOI2008]仪仗队【数学/欧拉函数】by cellur925
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- Luogu P1134 阶乘问题 【数学/乱搞】 By cellur925
输入输出格式 输入格式: 仅一行包含一个正整数 NN . 输出格式: 一个整数,表示最右边的非零位的值. 输入输出样例 输入样例#1: 12 输出样例#1: 6 说明 USACO Training S ...
- 数学思想:为何我们把 x²读作x平方
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
- 速算1/Sqrt(x)背后的数学原理
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- 深度学习笔记——PCA原理与数学推倒详解
PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- jQuery 网页禁止复制
<script type="text/javascript"> $(document).ready(function(){ $('#文本框id') ...
- HTML5模拟衣服撕扯效果
在线演示 本地下载
- 0CTF 2017 部分Web的某些不一样的思路
洒家参加了0CTF 2017,做了一些题目.赛后过了好几天,看网上已经有了一些写得不错的Writeup,这里就写一写洒家的一些不一样的思路. 一些不错的Writeup https://ctftime. ...
- BZOJ 1724 [Usaco2006 Nov]Fence Repair 切割木板:贪心 优先队列【合并果子】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1724 题意: 你要将一块长木板切成n段,长度分别为a[i](长木板的长度 = ∑ a[i] ...
- sqlite:多线程操作数据库“database is locked”解决方法
1. 使sqlite支持多线程(不确定是否非加不可,暂且加上,以备后患) 可以在编译时/启动时/运行时选择线程模式,参考:http://www.cnblogs.com/liaj/p/4015219.h ...
- (转)C/C++——auto,static,register,extern用法
转自:https://blog.csdn.net/u010757264/article/details/49932829 C++中变量.函数的属性包括数据类型和存储类别.存储类别分为静态存储和动态存储 ...
- ASCII UNICODE UTF "口水文"
最近接了一个单是需要把非 UTF-8 (No BOM)编码的文件转换成 UTF-8 (No BOM),若此文件是 UTF-8 但带有 BOM ,需要转换成不带 BOM 的.于是开启了一天的阅读.首先花 ...
- 1070 Bash 游戏 V4
传送门 1070 Bash游戏 V4 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量最少1个,最多 ...
- Dubbo配置设计
配置分类 配置格式 配置加载 可编程配置 配置缺省值 配置一致性 配置覆盖 配置继承 配置向后兼容 配置分类 首先,配置的用途是有多种的,大致可以分为: 环境配置,比如:连接数,超时等配置. 描述配置 ...
- Mesos和Marathon
libz is required for mesos to build 需要安装zlib-devel-1.2.7-17.el7.x86_64.rpm 其实跨Shell的Profile文件同步只要执 ...