
数论
weixin_43244265
这个作者很懒,什么都没留下…
展开
-
扩展欧几里得求通解、最小正整数解
扩欧求出来的解x,y是方程:ax+by=gcd(a,b)的解x0=x*c/gcdy0=y*c/gcdx0,y0是方程ax+by=c的解那么怎么求方程ax+by=c的通解呢?让x0向左、右平移n格,y的变化(n为整数)y0=(c-a*x0)/by1=(c-ax1)/b=(c-a(x0+n))/b=y0-a/b*n也就是说x1=x0+n;y1=y0-a/b*n把a/b转换为整数:x...转载 2020-02-21 15:22:11 · 922 阅读 · 0 评论 -
分解质因子
#include <stdio.h>int main(){ int n; scanf("%d", &n); for(int k = 2; k <= n; ){ //k从第一个素数开始 if(n%k == 0){ //如果k是n的因数 printf("%d\n", k); ...原创 2020-01-15 19:19:16 · 120 阅读 · 0 评论 -
阶乘
记一下公式。。。1、阶乘近似公式(斯特灵公式)N!=sqrt(2PIN)*(N/e)^N2、求阶乘的位数Digit = (int)(log10(sqrt(2PIN))+n*log10(N/e)+1)3、阶乘末尾0的个数long long count_zero(long long num){ long long sum=0; while(m) sum+=(...原创 2019-12-26 09:50:29 · 245 阅读 · 0 评论 -
原根
首先介绍一下阶的概念:设a,p是整数,a和p互素,那么使 a的n次方对p取模等于1 成立的最小正整数n叫做a模p的阶.原根:设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。即:a的φ(m)次方对m取模等于1;代码:#include <cmath>#include <cstdio>#define ll long long#defi...原创 2019-12-23 21:04:50 · 307 阅读 · 0 评论 -
母函数
我发现我一开始对母函数的理解有偏差,本来第一遍看的时候一以为是毫无规律的函数序列,怎么也不理解,昨天同学给我讲了后再回去看发现原来自己看错了,其实就是根据给定序列来确定方程的系数,这么简单的东西当时竟然没看懂,真是个憨憨。方程是这样的:f(x)=_+x+_x^2+ _x^3 +_x^2……+ _x^n其中 _ 就是系数,由你给定的序列来完成;例如:序列{0,1,2,3,4,5…n}的母函...原创 2019-12-13 21:30:11 · 333 阅读 · 0 评论 -
欧拉函数性质总结+杜教筛
这位大佬总结了一些欧拉函数的性质感觉听全面的,拿来保存一下。传送门转载 2019-12-12 21:58:42 · 173 阅读 · 0 评论 -
欧拉降幂
为什么要降幂:什么是欧拉降幂:注: φ(c)是欧拉函数;欧拉降幂怎么实现:#include<iostream>#include<cstring>#include<cmath>using namespace std;typedef long long ll;const int MAX=1000100; //快速幂ll fastPow(...原创 2019-12-12 20:44:56 · 116 阅读 · 0 评论 -
初识莫比乌斯反演
先来介绍一下什么是莫比乌斯反演:首先我们先来看一下这个式子:这个式子的意思就是F(n)和f(d)两个函数,其中d是n的因子,F(n)等于所有f(d)之和。这样我们知道f就能算出F,那么我们知道F能不能求出f呢,我们知道只需要将上述式子化成f等于多少F的形式就可以,而这就是莫比乌斯反演。举个例子:F(1)=f(1)F(2)=f(1)+f(2)F(3)=f(1)+ f(3)F(4)=...原创 2019-12-12 16:36:48 · 160 阅读 · 0 评论 -
佩尔方程
啊,自己还是太菜了,看了三篇博客才大概明白是怎么回事。。。佩尔方程是不定方程的一种,形如:其中D不为完全平方数。(如果D为完全平方数的话,那么原式就构成了一个平方差公式,(x-sqrt(D)y)(x+sqrt(D)y=1;那么就只有(±1,0)着一组特解了。。。下面给出佩尔方程的求解方法:首先我么设x1,y1,x2,y2,是佩尔方程的两组解,那么就有:我们把两个式子乘起来就有:化...原创 2019-12-11 21:33:27 · 1190 阅读 · 0 评论 -
中国剩余定理(孙子定理)
啊,我竟然连中国剩余定理都忘些了,这可是我们老孙家的东西啊,罪过,罪过。有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?——《孙子算经》就是:一堆物品3个3个分剩2个5个5个分剩3个7个7个分剩2个问这个物品有多少个首先利用逆元构造恒等式:57inv(5*7, 3) % 3 = 137inv(3*7, 5) % 5 = 135inv(3*5, ...原创 2019-12-10 21:11:39 · 121 阅读 · 0 评论 -
大组合数
额,总感觉忘了点什么,原来前面还有几个知识点没整理。。。。大组合数:这个式子算起来应该没难度把,当然阶乘谁不会算,那么问题来了如果n和m很大呢,那阶乘早爆了,所以就有了大组合数。卢卡斯说:C(n, m) % p = C(n / p, m / p) * C(n%p, m%p) % p;如果 C(n / p, m / p) 或C(n%p, m%p) 也太大呢?卢卡斯说:…………(递...原创 2019-12-10 20:49:30 · 297 阅读 · 0 评论 -
完全数
完全数,又称完美数或完备数,是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)之和,恰好等于它本身。或者可以理解为,如果n是一个正整数,且所有正因子之和等于2n,那么n称为完全数。完全数有6个重要性质:性质1 完全数都能写成连续自然数之和;性质2 每个完全数的全部因数倒数之和都是2,因此每个完全数都是调和数;性质3 除了6以外的完全数,每个数都可以写成连续奇数的立方和;性质4 ...原创 2019-12-09 21:21:43 · 2447 阅读 · 0 评论 -
数根
额,记录一下模板,嘿嘿数根数根(又称数字根Digital root)是自然数的一种性质,每个自然数都有一个数根。数根是将一正整数的各个位数相加(即横向相加),若加完后的值大于等于10的话,则继续将各位数进行横向相加直到其值小于十为止,最后得到的数字就是该数的数根数根的性质root(a+b)=root(root(a)+root(b))root(a*b)=root(root(a)*root...转载 2019-12-05 18:25:05 · 626 阅读 · 0 评论 -
矩阵快速幂
矩阵快速幂,看着听高深,其实就是字面意思,矩阵的快速幂,再说清楚点就是矩阵的幂运算,很好理解,但这涉及到矩阵的乘法,先来矩阵的乘法:(还好线代好好听课了)const int N=100;int c[N][N];void multi(int a[][N],int b[][N],int n)//n是矩阵大小,n<N{ memset(c,0,sizeof c); for(...原创 2019-12-05 17:46:37 · 84 阅读 · 0 评论 -
欧拉函数
欧拉函数,用φ(n)表示欧拉函数是求小于等于n的数中与n互质的数的数目思路:我们可以用n减去1~n-1中与n不互质的数实现:将n质因数分解让后去掉因数及他们的倍数注意:这里要是一项一项的减的话会有减重的情况,比如:把12质因数分解,12=223,其实就是得到了2和3两个质因数然后把2的倍数和3的倍数都删掉2的倍数:2,4,6,8,10,123的倍数:3,6,9,12这里6和12重...原创 2019-12-04 19:48:24 · 180 阅读 · 0 评论 -
康托展开
思想:数列的每一种排列对应一个唯一的状态,可以用一个固定的数表示这种状态从而实现用简单的数来表示复杂的状态,特别是原状态是一个整体而已知的数据类型无法存储的时候,也能记录该排列在全排列中的位置。+实现思路(自己的理解,不一定对):所谓同一种排列就是对应位置上的数据相同,也就是说位置与位置上的数据构成了一种排列,我们用一种方法将位置与对应的数据结合起来再把整个排列结合起来就能唯一表示这个排列。康...原创 2019-12-03 11:30:57 · 125 阅读 · 0 评论 -
逆元
逆元(a + b) % p = (a%p + b%p) %p (对)(a - b) % p = (a%p - b%p) %p (对)(a * b) % p = (a%p * b%p) %p (对)(a / b) % p = (a%p / b%p) %p (错)逆元就是为了解决最后一个式子而来大的!a的逆元,我们用inv(a)来表示(a / b) ...原创 2019-12-02 20:56:38 · 98 阅读 · 0 评论 -
扩展欧几里得
扩展欧几里得贝祖说:ax+by = gcd(a, b) 这个公式肯定有解额(⊙﹏⊙) 贝祖说的对!这个公式我们写作ax+by = d,(gcd(a, b) | d)扩展欧几里得就是求这个公式的解的方法老样子,先上代码:#include<cstdio>typedef long long LL;void extend_Eulid(LL a, LL b, LL &...原创 2019-12-02 20:31:19 · 125 阅读 · 0 评论 -
快速幂,最大公约数(gcd)
快速幂没什么好说的,直接上代码LL pow_mod(LL a, LL b){//a的b次方 if(b == 0) return 1; LL ret = pow_mod(a, b/2); ret = ret * ret % MOD; if(b % 2 == 1) ret = ret * a % MOD; return ret;}a的b次方=a的b/2...原创 2019-12-02 20:15:15 · 172 阅读 · 0 评论 -
素数
素数素数最重要的时素数的求法,可以根据定义求还有它的优化等,其实都用不大上(复杂度太高),这里不啰嗦了直接上埃筛:#include<cstdio>#include<iostream>using namespace std;int N;bool prime[10010];void init(){ for(int i = 2; i < N; i ++...原创 2019-12-02 19:52:57 · 167 阅读 · 0 评论