同模与模算术

同模与模算术

(a+b) mod n=((a mod n)+(b mod n))mod n
(a-b) mod n=((a mod n)-(b mod n)+n)mod n
ab mod n=(a mod n)(b mod n)mod n

注意乘法中(a mod n)(b mod n)是否会超出int的范围

//乘法求模函数
int mulMod(int a, int b, int n)
{
    a%=n,b%=n;
    return (int)(__int64)(a*b%n);
}

n和m, 输出n mod m 的值. n<=10^100, m<=10^9

int bigIntMod(string n,int m)
{
	int len=n.length();
	int ans=0;
	for(int i=0;i<len;i++)
	{
		ans=(int)(((__int64)ans*10+n[i]-'0')%m);
	}
	return ans;
}

正整数a,n,m,求a^n mod m. a,n,m<=10^9

int powMOd(int a,int n,int m)
{
    int ans=1;
    for(int i=0;i<n;i++)ans=(int)((__int64)(ans*a)%m);
    return ans;
}
//时间复杂度为O(n)
//分治法,速度更快
int powMod(int a,int n,int m)
{
    if(n==0)return 1;
    int x=powMod(a,n/2,m);
    __int64 ans=(__int64)x*x%m;
    if(n%2==1)ans=ans*a%m;
    return (int)ans;
}
//时间复杂度为O(logn)

正整数a,b,n,解方程ax≡b (mod n), 即ax mod n=b mod b, a,b, n<=10^9
我们知道a ≡b (mod n)的充要条件是(a-b)是n的倍数

于是本题可以变成(ax-b)是n的整数倍,设ax-b=ny
需要说明的是, 如果x是方程的解, 满足x≡y(mod n)的其它整数y也是方程的解
所以同余方程的一个解指的实际上是一个同余等价类

方程ax≡1(mod n)的解称为a关于模n的逆. 当gcd(a,n)=1时,该方程有唯一解,否则无解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值