同余(数论)1082同余方程

news/2024/7/15 17:20:38 标签: 算法, c++, 图论

同余

如果整数a和整数b除以正整数m的余数相等,叫做a,b模m同余,记作a≡b(mod m)
当然有两种理解的方法
1.两个数除以m的余数相同
2.两个数的差是m的倍数
关于同余有很多的性质:
1.自反性;2.对称性;3.传递性;4.同价性;5.同乘性;6.同幂性;7.同余不满足同除性

费马小定理

如果p是质数,那么对于任意一个整数a ap≡a(mod p)

欧拉定理

如果一个正整数a,n互质,则a欧拉函数(n)≡1(mod n)

拓展欧几里得算法

bezout定理,就是说,对于一个存在两个数a,b存在一对整数x,y,满足ax+by=gcd(a,b)
这就是exgcd,拓展欧几里得算法,是用来求解线性同余方程的

gcd(a,b)=gcd(b,a%b)那么存在一对整数x,y,满足bx+a%by=gcd(b,a%b),然后通过一系列的分解化简,就能求出来ay-b(x-a/b*y)=gcd(a,b)

给定一个方程Ax+By=k
给出A   B   k,求出x和y,使得满足方程

其实就是上面所提到的公式
ay-b(x-a/by) = 然后令x_=y,y_=x-a/by,那么 ax_+by_=gcd(a,b)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int exgcd(int a,int b,int x,int y)
{
	if(b==0)
	{
		x=1,y=0;
		return a;
	}
	else
	{
		int x_,y_;
		int d=exgcd(b,a%b,x_,y_);
		x=y_;
		y=x_-(a/b)*y_;
		return d;
	}
}
int main()
{
	int a,b,k,x,y;
	cin>>a>>b>>k;
	int d=exgcd(a,b,x,y);
	if(k%d)
	{
		cout<<"无解"<<endl;
	 	return 0;
	}
	else
	{
		x=x*k/d;
		y=(k-a*x)/b;
	}
	return  0;
}

1082 同余方程(板子)

其实,同余得意思就是如果整数a和整数b除以正整数m的余数相等,叫做a,b模m同余,记作a≡b(mod m)
当然这个是官方语言,意思通过字面就能理解,就是同个得余数
因为余数相同,所以引入出来一个定律就是两个人的差是m的倍数

#include<iostream>  
#include<cstdio> 
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int a,b,x,y,k;
void exgcd(int a,int b)
{
    if(b==0)
    {
        x=1;
        y=0;
        return;
    }
    exgcd(b,a%b);//递归 
    k=x;
    x=y;
    y=k-a/b*y;
    return ;
}
int main()
{
    cin>>a>>b; 
    exgcd(a,b);
    cout<<(x+b)%b<<endl;
    return 0;
}

http://www.niftyadmin.cn/n/850773.html

相关文章

matlab人工神经网络参数

实验环境&#xff1a;Matlab R2009a 查看方法&#xff1a;doc network 1 .perFrom .perFromFcnsse; % 性能函数&#xff0c;这里设置为‘sse’&#xff0c;即误差平方和 2 .trainParam. 查看方法:doc traingdx .trainParam.goal0.1 …

HDU4135Co-prime(容斥原理)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4135 题目解析&#xff1a; 给你一个闭区间[A,B](1 < A < B < 1015),以及一个正整数N&#xff0c;求[A,B]中与N互质的个数&#xff0c;可以先求[1,B]中与N互质的个数&#xff0c;在求[1,A-1]中与N互质…

Python3.x和Python2.x的区别

1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间&#xff0c;在字符串和操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%&#xff0c;还有很大的提升空间。 2.编码 Py3.X源码文件默认使用utf-8编码&#xff0c;这就使得以下…

裁纸奔月python_中国大学MOOC的APP2020Python编程基础期末考试搜题公众号答案

中国大学MOOC的APP2020Python编程基础期末考试搜题公众号答案更多相关问题【判断题】高级训练者的大肌肉群练习一般不超过10-12组。A. 对B. 错When customers receive the goods _____ quality, they may make a complaint or file a claim against the supplier.【单选题】信用…

linux x-11关闭,Linux下基于Xdialog的Oracle11gR2助手工具(实现Oracle11g 启动、关闭、重启)...

#!/bin/sh##Oracle11gR2工具 作者&#xff1a;小利 QQ&#xff1a;155122504#此脚本需要Xdialog支持&#xff0c;请事先下载。#ORACLE_HOME/opt/Oracle11g/product/11.2.0/dbhome_1; export ORACLE_HOMEXdialog --backtitle "Oracle11gR2 启动管理器" /--title "…

Linux下的IPC通信,linux-IPC进程通信-管道

管道是Linux支持的最初Unix IPC形式之一。管道是半双工的&#xff0c;数据只能向一个方向流动&#xff1b;一个管道只能负责一个方向的数据传输。需要双方通信时&#xff0c;需要建立起两个管道&#xff1b;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)&#xff1b;假…

企业在线ERP系统与内控控制因素管理

2019独角兽企业重金招聘Python工程师标准>>> 企业内部控制是以专业管理制度为基础&#xff0c;以防范风险、有效监管为目的&#xff0c;通过全方位建立过程控制体系、描述关键控制点和以流程形式直观表达生产经营业务过程而形成的管理规范。   企业内部控制包括以…

详解python运行三种方式_详解python运行三种方式

方式一交互式编程交互式编程不需要创建脚本文件&#xff0c;是通过 python 解释器的交互模式进来编写代码。linux上你只需要在命令行中输入 python 命令即可启动交互式编程,提示窗口如下&#xff1a;$ pythonpython 2.7.6 (default, sep 9 2014, 15:04:36)[gcc 4.2.1 compatibl…