数学补天 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个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- 如何设置确认selinux 模式【转】
本文转载自:http://blog.csdn.net/lei1217/article/details/48377109 [Description]linux SELinux 分成Enforce 以及 ...
- vue 升降排序
本实例是根据工作进度的百分比来进行排序. html <div class="ibox-content"> <li v-for="(rangeItem,i ...
- MySQL Unable to convert MySQL date/time value to System.DateTime的解决办法
在连接串中加入 Convert Zero Datetime=True
- vs2015professional过期后登录微软账户仍然不能使用的解决方法
今天安装了vs2015pro版,找到了一个可以正常使用的密钥 2015 pro(专业版)key:HMGNV-WCYXV-X7G9W-YCX63-B98R2 注意是专业版,非企业版 来源:https:/ ...
- Apache禁止或允许固定IP访问特定目录、文件、URL
1. 禁止访问某些文件/目录 增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库: <Files ~ "\.inc$"> Order a ...
- 【C】四则运算生成和核对器----by郁卓、谢明浩
[Github项目地址] 完成功能: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围 3. 生成的题目中计算过程不能产生负数,也就是 ...
- 勤于思考:Objective-C特性的扩展
赋值 assign:直接赋值.默认 @interface Car : NSObject { NSString *_name; } @property (assign,nonatomic) NSStri ...
- next enum in swift
enum Iter: Int{ case s1=0, s2, s3, s4 mutating func next(){ if self == .s4 { self = .s1 return } sel ...
- codeforces 706B B. Interesting drink(二分)
题目链接: B. Interesting drink 题意: 给出第i个商店的价钱为x[i],现在询问mi能在多少个地方买酒; 思路: sort后再二分; AC代码: #include <ios ...
- python 动态添加属性及方法及“__slots__的作用”
1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...