首页 > 其他分享 >数论学习笔记

数论学习笔记

时间:2024-07-20 11:08:42浏览次数:14  
标签:frac Gcd 数论 笔记 学习 int y0 Ax x0

ExGCD:

目的:求形如 \(Ax+By=C\) 的不定方程的通解

有解判断:

方程有解的充要条件是 \(Gcd(a,b)|C\),可以使用数论知识证明

问题简化:

将问题简化为求 \(Ax+By=Gcd(a,b)\) 的通解,先求他的一组解。

思路及证明:

使用递归的思想减小A和B的值,直至方程变为\(x=Gcd(x,0)\)的形式。

已知:

\[Gcd(a,b)=Gcd(b,a\%b) \]

考虑:

\[Ax_1+By_1=Gcd(A,B) \]

\[Bx_2+(A\%B)y_2=Gcd(B,A\%B) \]

然后寻找\((x_1,y_1)\)和\((x_2,y_2)\)的递推关系。

将\(a\%b=\lfloor\frac{a}{b}\rfloor b\)带入得:

\[A(x_1-y_2)+B(y_1-x_2+\lfloor\frac{A}{B}\rfloor y_2)=0 \]

由于我们只需要每个递归状态的一组解即可,所以我们可以直接使用

\(x_1=y_2\)

\(y_1=x_2-\lfloor\frac{A}{B}\rfloor y_2\)

进行递归,得到一组特解。

求通解:

已知:

\[Ax_1+By_1=C \]

\[Ax_2+By_2=C \]

两式做差:

\[Ax_1+By_1=Ax_2+By_2 \]

设\(g=Gcd(A,B)\)

则:

\[\frac{A}{g}(x_1-x_2)+\frac{B}{g}(y_1-y_2)=0 \]

得通解:

\(x=x_0+k\frac{B}{g}\)
\(y=y_0-k\frac{A}{g}\)

例题:

青蛙的约会

本题需要求出x的最小正整数解,可以采用\(M=|\frac{B}{g}|\), \(x=(x_0%M+M)%M\)来求出最小整数解x,注意模数一定取正数!还有注意开longlong

#include<bits/stdc++.h>
#define int long long
using namespace std;

int x, y;

int exgcd(int a, int b){
	if (b == 0){
		x = 1;y = 0;return a;
	}
	int g = exgcd(b, a%b);
	int tmp = x;
	x = y;
	y = tmp - a / b * y;
	return g;
}

signed main(){
	int x0, y0, m, n, l;cin>>x0>>y0>>m>>n>>l;
	int g = exgcd(m - n, l);//方程形如(m-n)x+ly=(y0-x0)
	if((y0 - x0) % g) cout<<"Impossible"<<endl;
	else{
		x *= (y0 - x0) / g;
		l = abs(l / g);
		x = (x % l + l) % l;
		cout<<x<<endl;
	}
	return 0;
}

标签:frac,Gcd,数论,笔记,学习,int,y0,Ax,x0
From: https://www.cnblogs.com/w-official/p/18312859

相关文章

  • JavaScript与DOM的奇妙探险:从入门到精通的实战笔记
    文章目录JavaScript基本说明特点两种使用方式在script中写使用script标签引入JS文件数据类型介绍特殊值运算符算数运算符赋值运算符逻辑运算符:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bbf5c150699845af837d3c45c926e941.png)条件运算符数组的定义基......
  • [深度学习]基于yolov10+streamlit目标检测演示系统设计
    YOLOv10结合Streamlit构建的目标检测系统,不仅极大地增强了实时目标识别的能力,还通过其直观的用户界面实现了对图片、视频乃至摄像头输入的无缝支持。该系统利用YOLOv10的高效检测算法,能够快速准确地识别图像中的多个对象,并标注其边界框和类别。用户无需深入了解复杂的后端处理......
  • Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线
    本文给大家列出了Arm架构的学习大纲、学习方法、自学路线、付费学习路线。有兴趣的可以关注,希望对您有帮助。ARM64位架构介绍ARM64位架构介绍ARM架构概况,v8-A及其他架构概况ARM架构扩展到v8-A,v8.1A,v8.2-A等版本v8-A介绍和原理支持v7遗留代码AArch32和AArch64状态......
  • Java学习日记 (day4)
    习题练习1. 输入某年某月某日,判断这一天是这一年的第几天?输入某年某月某日,判断这一天是这一年的第几天packagetest.test2_1;importjava.util.Scanner;publicclassTest_1{publicstaticintsearch_month(intm,int[]arr){if(m==2){......
  • 【笔记-软考】系统架构评估
    Author:赵志乾Date:2024-07-20Declaration:AllRightReserved!!!1.概念        架构评估是在架构分析与评估的基础上,对架构策略的选取进行决策,其利用数学、逻辑分析等技术,针对系统的一致性、正确性、质量属性、规划结果等不同方面,提供描述性、预测性和指令性的分析结果......
  • Datawhale AI 夏令营——电力需求挑战赛——Task3学习笔记
        这一期学习进阶的特征提取与分析,构建深度学习方案,拿下更高分数,冲冲冲。项目链接:‌​​‬​‍​​​‌​‬‬⁠​​⁠​⁠​​​​⁠​​‍​​‍​​‌⁠‬​⁠​⁠‍‌​‌​​‍​Task3:尝试使用深度学习方案-飞书云文档(feishu.cn)    前两期介绍了......
  • c语言学习
    double中用%lf进行输入scanf("%lf",&x); .在整型数组中用%d进行输入scanf("%d",&a); 注意:数组名必须带取地址符&  注意:此时&a传输的是首地址   4.在字符串数组中用%s进行输入scnaf("%s",a); 注意:数组名不能带取地址符& scanf("%s",a)函数输入字......
  • 2024/07/19(暑假学习hadoop第二周总结)
    本周的学习任务主要是完成Hadoop中有关的组件的配置。有关于此配置的过程严格按照黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目全套一网打尽_哔哩哔哩_bilibili来进行配置。首先就是HDFS的配置,这是Hadoop分布式文件系统,用于在多个服务器上构建存储......
  • 大数据学习02
    HDFS(HadoopDistributedFileSystem)HDFS是Hadoop的核心组件之一,旨在解决大数据存储和管理的问题。其主要特性包括高容错性、高可扩展性和高吞吐量。HDFS将文件拆分成多个数据块,并将这些数据块分布存储在集群的不同节点上,从而实现数据的高可靠性和高可用性。HDFS的主......
  • 数据仓库建模工具之一——Hive学习第五天
    Hive的分区1、Hive分区(十分重要!!)分区的目的:避免全表扫描,加快查询速度!在大数据中,最常见的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的,就是我们可以把大的数据,按照每天或者......