>数论(=√=)<
文章平均质量分 69
MaywrILoi
这个作者很懒,什么都没留下…
展开
-
数论知识整理
最大公因数gcd和最小公倍数lcm:代码ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}ll lcm(ll a,ll b){ //return a*b/gcd(a,b); return a/gcd(a,b)*b;//防止a*b炸ll }扩展欧几里得算法exgcd:代码ll exgcd(ll a,ll b,ll &x,ll &原创 2017-11-04 09:22:16 · 733 阅读 · 0 评论 -
错排相关
错排相关考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。n个元素的错排数记为D(n) 公式:D(n)=(n-1)*[D(n-2)+D(n-1)] 特殊地,D(1)= 0, D(2)= 1. 可递推求解. 简化公式:D(n) = [n!/e+0.5] ,其中e是自然对数的底 推导过程: 对于n个元素,一个元素错排数有(n-1)种原创 2017-10-11 23:26:33 · 426 阅读 · 0 评论 -
快速幂模板及应用
实现原理: a^b mod c = ((a^2)^b/2)mod c,b为偶数, a^b mod c = ((a^2)^b/2 * a)mod c,b为奇数。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<ctime>using namespace std;typedef原创 2017-11-01 12:59:31 · 296 阅读 · 0 评论 -
欧几里得及扩展欧几里得算法详解
欧几里得算法 有两个数 a b,现在,我们要求 a b 的最大公约数,有欧几里得算法: gcd(a,b) = gcd(b,a%b) 若b>a,则第一步先完成了交换,再开始了求最大公约数的过程。 代码: 为什么要在b = 0时回溯呢? 对于两个数a b,显然在辗转相除的过程中一定会得到一个状态一个数非0,一个数为0。 简单的证明: 上图为欧几里得算法分部过程。 观察最后的a%原创 2017-10-27 07:05:20 · 513 阅读 · 0 评论 -
Codevs2461反质数
http://codevs.cn/problem/2461/Codevs2912,洛谷P1463与此题完全相同…. 虽然分别是06浙江07河南和05山东的省队选拔赛题目….. 注意题目有问题..是求最小的反质数。思路 首先要明确一个结论: 某一个数的因子数 = 组成这个数的各质因子数的次数+1的乘积。可以由唯一分解定理和乘法原理得到。 这是我们统计因子数的计算式。 那么我们就将一个反质数原创 2017-11-02 19:19:12 · 199 阅读 · 0 评论 -
Codevs2488绿豆蛙的归宿
http://codevs.cn/problem/2488/ 思路 题目保证所有点都可以到达终点,则开始时加入队列的点有且仅有终点,且使得通过反向topsort/search 得到的期望与正向是相同的,并且起点到终点的期望始终等于终点到起点的期望 1. 正向DFS只需要记录可以到达n的路径的期望,依次传参找到终点再加入答案 反向DFS记录可以到达1的路径的期望,依次传参找到起点再加入原创 2017-10-23 00:08:57 · 290 阅读 · 0 评论