数学补天 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个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- Machine Learning No.8: Clusting
1. K-means algorithm 2. K-means optimization objective 3. Random initialization
- JAVA线程sleep和wait方法区别 代码
package test; import java.util.Date; import java.util.Random; public class test { public static void ...
- (linux)LED子系统
数据结构(/include/linux/leds.h) enum led_brightness { LED_OFF = 0, LED_HALF = 127, LED_FULL = 255, }; le ...
- csrf防范笔记
1.验证Http的refer字段 http有一个refer字段,用以记录该http请求的来源地址 好处: 简单便捷,后台开发人员只需要设置一个拦截器 缺点: Referer 的值是由浏览器提供的,虽然 ...
- linux内核 RCU机制详解【转】
本文转载自:https://blog.csdn.net/xabc3000/article/details/15335131 简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前 ...
- matlab的调试
MATLAB(1)——基本调试方法(Debug) 链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 前言 之前经 ...
- listen 75
Hot Jupiters Smarten Search For Other Earths Scientists are looking for Earth like planets around ot ...
- codeforces 703D D. Mishka and Interesting sum(树状数组)
题目链接: D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megaby ...
- fscanf和fgets用法
首先要对fscanf和fgets这两个文件函数的概念有深入的了解,对于字符串输入而言这两个函数有一个典型的区别是: fscanf读到空格或者回车时会把空格或回车转化为/(字符串结束符)而fgets函数 ...
- Loading 遮蔽层 简单实现。
<!--背景div--><div id="bg" class="bg" style="display:none;text-align ...