首页 > 其他分享 >数论小节

数论小节

时间:2023-05-13 14:56:17浏览次数:27  
标签:return gcd 求解 数论 代码 小节 long int

@

目录

1.exgcd

前提:gcd函数代码:

long long gcd(long long a,long long b){
	return b>0?gcd(b,a%b):a;
}

函数代码:

long long exgcd(long long a,long long b,long long&x,long long &y){
	if(b==0){
		x=1,y=0;
		return a;
	}
	long long d=exgcd(b,a%b,x,y);
	long long t=x;
	x=y;
	y=t-a/b*y;
	return d;
}

使用格式:

long long x,y,m,n,l;
	long long X,Y;
	long long x0;
	cin >> x >>y>>m>>n>>l;//解x+tm%l=y+tn%l的t ____x-y+tm-tn=kl(k,t正整数) 
	long long a=m-n;//(m-n)x0-ly0=y-x 求x0最小正整数
	long long b=-l;
	long long c=y-x;
	x0=exgcd(a,b,X,Y);//返回gcd
	if(c%x0!=0){//无解
		cout<<"Impossible";
	}
	else{ 
		b=b/x0;
		cout<<((X*(c)/x0)%b+b)%b;
	}

适用模式:

1.求解方程

解决形如ax+by=c的方程式

2.欧拉函数

函数代码:

int phi(int x){
	int ans=x;
	int i;
	for(i=2;i*i<=x;i++){
		if(x%i==0){
			ans=ans/i*(i-1);
			while(x%i==0){
				x/=i;
			}
		}
	}
	if(x>1){
		ans=ans/x*(x-1);
	}
	return ans;
}

使用格式:

直接用phi(x);

适用模式:

1.求解方程

对形如
$$
a^x mod k \equiv 1
$$
的x求解———>先求phi(k),再枚举它的因子

2.求解有限制的gcd

不太好说,上例子


		//-----------------------------------------重点在这后面
		int ans=0;
//		for(int i=0;i<=ma;i++){
////			if(gcd(i,m)==1){
////				ans++;
////			}		
//		}//用欧拉函数代替一下 
		ans=phi(ma);
        //----------------------------------------重点在这前面


说白了就是把一堆gcd(i,m),m为定值的和进行o(1)求解

3.(ex)BSGS

函数代码:

long long BSGS(long long a,long long b,long long p,long long v=1){
	if(!a){
        if(!b) return 1;
        else return -1;
    }
	long long m =ceil(sqrt(p)),val=1,d;
	for(long long i=0;i<m;++i){
		long long pron=b*val%p;
		MP[pron]=i;
		val=val*a%p;
	}
	d=v*val%p;
	for(long long i=1;i<=m;++i){
		
		if(MP.count(d)){
			long long res=MP[d];
			return i*m-res;
		}
		d=d*val%p;
	}
	return -1;
}
long long exbsgs(long long a,long long b,long long p){
	if (b==1||p==1)return 0;
	long long t,c=0,v=1;
	while((t=gcd(a,p))!=1){
		if(b%t){
			return -1;
		}
		else{
			p/=t;
			b/=t;
			v=v*a/t%p;
			++c;
			if(b==v){
				return c;
			}
		}
	
	}	
		long long ret=BSGS(a,b,p,v);
		return ret!=-1?ret+c:ret;
}

使用格式:

直接套用即可

适用范围:

1.求解方程组

$$
a^x\equiv b(mod p)
$$

4.整数分块

代码:

long long fd{
	long long res=0;
	for(int l=1,r;l<=n;l=r+1){
		r=n/(n/l);
	}
}

用法:

1.简化时间复杂度

2.其中每一段,每一段的个数有r-l+1个,值为n/l;

5.莫比乌斯反演(思想)

代码:

m[1] = 1;
for(int i = 2; i <= n; i++){
    if(!k[i]){
        p[++t] = i;
        m[i] = -1;		
    }
    for(int j = 1; j <= t && p[j]*i <= n; j++){
        k[p[j]*i] = 1;
        if(i%p[j] == 0) break;
        m[i*p[j]] = -m[i];	
    }
}

用法:

直接用m[x]即可使用

目前遇到的大部分用法只有

标签:return,gcd,求解,数论,代码,小节,long,int
From: https://www.cnblogs.com/linghusama/p/17397396.html

相关文章

  • 230512 // 数论
    夺,夺少?哦,85pts,小让一手。A.征兵http://222.180.160.110:1024/contest/3574/problem/1GM说,怕久了不打最小生成树我们给忘了。笑话,就算退役十年我也不一定能忘了Kruskal,就算在役十年我也不一定能记住Prim。就一板板题,没什么好说的。#defineintlonglongnamespaceXSC......
  • 雷达著作翻译 | 《现代汽车雷达应用》第2章汽车雷达系统原理(2.4小节)
    本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。本期文章是翻译《现代汽车雷达应用》的第四期,这本书我感觉将来会成为经典的,特别适合学习毫米波雷达的初学者,本书会全部翻译。虽然目前......
  • 雷达著作翻译 | 《现代汽车雷达应用》第2章汽车雷达系统原理(2.5小节)
    本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。本期文章是翻译《现代汽车雷达应用》的第五期,这本书我感觉将来会成为经典的,特别适合学习毫米波雷达的初学者,本书会全部翻译。虽然目前......
  • 雷达著作翻译 | 《现代汽车雷达应用》第2章汽车雷达系统原理(2.3小节)
    本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。本期文章是翻译《现代汽车雷达应用》的第三期,这本书我感觉将来会成为经典的,特别适合学习毫米波雷达的初学者,本书会全部翻译。虽然目前......
  • 雷达著作翻译 | 《现代汽车雷达应用》第2章汽车雷达系统原理(2.6小节)
    本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。本期文章是翻译《现代汽车雷达应用》的第六期,这本书我感觉将来会成为经典的,特别适合学习毫米波雷达的初学者,本书会全部翻译。虽然目前......
  • 一些数论知识
    欧拉函数定义$1-N$中与$N$互质的个数被称为欧拉函数,记为$φ(n)$。公式设$n={p_1}{c_1}*{p_2}\cdots^{c_m}$则$φ(n)=n\dfrac{p_1-1}{p_1}\dfrac{p_2-1}{p_2}\cdots\dfrac{p_m-1}{p_m}$性质$φ(1)=1$,因为$1$的质因数个数为$0$,所以原式$=1$$n$为质数,则$φ(n......
  • 数论
    莫反,欧拉反演常用结论:\(\mu*1=\epsilon,\varphi*1=id\).\(\mu^2(n)=\sum_{d^2|n}\mu(d)\).\(d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\).\(\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\).杜教筛积性函数\(f=g*h\),它们的前缀和分别是......
  • 数论基础1-整数的离散型
    例题一:例题二:例题三:例题四: ......
  • 初等数学瞎扯Ⅲ:数论函数与筛法
    0.前置知识与基本定义\([op]\):值为\(1\)当且仅当方括号内条件为真。记为艾弗森括号唯一分解定理:一个正整数\(x\)可以被唯一分解为\(\prod\limits_{i=1}^mp_i^{c_i}\),其中\(\foralli\in[1,m],p_i\in\mathbb{P}\)。(关于\(\mathbb{P}\),详见初等数学瞎扯Ⅰ:同余相关)。......
  • codeforces 2B B. The least round way(dp+数论)
    题目链接:codeforces2B题目大意:给出一个n*n的矩阵,从左上角走到右下角,只能向右或向下走,问路径上的数之积末尾0最少的方案是什么。题目分析:首先我们要做两个预处理,处理出每个位置上的数包含多少个2的质因子和多少个5这个质因子然后我们统计路径上弄到最少的2的方案数和最少的5的方案......