首页 > 其他分享 >取模专题

取模专题

时间:2022-09-30 21:34:54浏览次数:47  
标签:取模 专题 frac int bmod exgcd return ax

有理数取质数余

求 \(\frac{a}{b}\bmod p\) 其中 \(p\) 为质数。

费马小定理

费马小定理 : \(a^{p-1}\equiv 1~ (\bmod p)\) 其中 \(p\) 为质数。
\(\frac{a}{b}\bmod p\)
\(=\frac{a}{b}\cdot b^{p-1}\bmod p\)
\(=a\cdot b^{p-2}\bmod p\)

扩展欧几里德 exgcd

求不定方程 \(ax+by=\gcd (a,b)\) 其中的一个解
解法:
假设已经求出一组数\(x2,y2\),满足:\(bx_2+(a \bmod b) y_2=\gcd(a,b)\)
那么:\(ax+by=bx_2+(a \bmod b) y_2\)
因为:\(a \bmod b = a−b\times\frac{a}{b}\)
所以: \(ax+by = bx_2+( a−b\times\frac{a}{b}) y_2\)
\(ax+by=bx_2+ay_2 - b\times\frac{a}{b}y_2\)
\(ax+by=ay_2 - b(x_2-\frac{a}{b}y_2)\)
可以求出其中一组解:\(x=y_2 ~ , ~ y=x_2-\frac{a}{b}y_2\)
辗转相除使最后总会\(a_n=gcd(a,b),b_n=0\)
所以最后一层辗转相除的\(x_n=1\)

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

乘法逆元

求 \(ax \bmod b=1\) 的最小整数解
实质就是 \(ax-bc=1\)
可转换成 \(ax+by=1\)
不难证明 \(\gcd(a,b)=1\) 时无解
直接套用扩展欧几里德

#include <bits/stdc++.h>
using namespace std;
int a,b,x,y;
void exgcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1;
		y=1;
		return;
	}
	exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
}
int main(){
	scanf("%d%d",&a,&b);
	exgcd(a,b,x,y);
	printf("%d",(x%b+b)%b);
	return 0;
}

有理数取余

求 \(\frac{a}{b} \bmod c\)
实求 \(\frac{a}{b} \equiv x ~(\bmod c)\)
\(=a\times\frac{1}{b} \equiv x ~(\bmod c)\)
只要求出 \(\frac{1}{b} \bmod c\) 就能求出 \(x\)
设 \(by\equiv1 \bmod c\)
使用乘法逆元求出 \(x\)

#include <bits/stdc++.h>
using namespace std;
int a,b,c,x,y;
void exgcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1;
		y=1;
		return;
	}
	exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
}
int main(){
	scanf("%d%d%d",&a,&b,&c);
	exgcd(b,c,x,y);
	printf("%d",a*(x%c+c)%c);
	return 0;
}

标签:取模,专题,frac,int,bmod,exgcd,return,ax
From: https://www.cnblogs.com/xiaocaibiancheng/p/16745848.html

相关文章

  • 新技术专题笔记
    特征提取,近看和远看(有细节丢失)好的方法是:既有全局信息,又有局部信息能不能让监测的窗口实现自适应,目前提取的窗口只有局部信息,没有全局信息,能不能把全局信息也安......
  • kuangbin 专题35 博弈论(I)
    Playagame题目:从一个n*n的角落出发,每次移动到相邻的,而且没有经过的格子上。谁不能操作了谁输。 结论就是n为偶数,先手赢,奇数,后手赢。大佬思路  BraveGame巴......
  • 如何从3dwarehouse获取模型(非商用)
        这是需要一些模型做练习时,从网上下载的开放模型,非商业应用,否则会被网站追责版权!    3dwarehouse的模型一般都放在谷歌地球上去展示,打开谷歌地球就可以看......
  • 电商专题设计中的常见问题
    前几天内部就近期的商城专题进行了一些评估,讨论了一些常见的问题。跟大家分享一下。1、入口banner和专题头部要相呼应,不应有太大出入,可以选取相同的元素、背景等,保持视觉的......
  • Java登录专题-----创建用户(一)
    Java登录专题-----创建用户(一)我来填坑了创建用户入参应该包括:用户姓名,用户密码,用户手机号,用户所属机构用户版本号,角色id 出参:没有 数据结构:JavaBean  ......
  • 微信小程序专题(一)-----微信后台的相关开发
    本人最近在做微信小程序后端的相关开发工作接触到微信小程序目前来讲需要两个条件1.前端通过后台服务器去调用微信平台接口,来获取openid;2.前端必须调用https跟域名......
  • 微信小程序专题(二)-----微信openid的获取
    一,简单来讲就是以下流程 通过get方式获取信息在前端调用wx.login()获取临时登录凭证code之后,将code字符串发送给后端,后端通过auth.code2Session接口获取用户唯一......
  • 斐波那契数列(取模)
    题目:菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。......
  • 数学专题
    数学专题标识更新\({\color{Green}\natural}{\color{Orange}\natural}{\color{Red}\natural}\)有硬核的数学或数据结构或算法\({\color{Green}\sharp}{\col......
  • 构造专题
    构造专题标识更新\({\color{Green}\natural}{\color{Orange}\natural}{\color{Red}\natural}\)有硬核的数学或数据结构或算法\({\color{Green}\sharp}{\col......