我是靠谱客的博主 个性大米,最近开发中收集的这篇文章主要介绍洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元TITLE思路CODE,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元

TITLE

思路

CRT

x ≡ a 1 ( m o d m 1 ) xequiv a_1pmod {m_1} xa1(modm1)

x ≡ a 2 ( m o d m 2 ) xequiv a_2pmod {m_2} xa2(modm2)

… … ……

x ≡ a n − 1 ( m o d m n − 1 ) xequiv a_{n-1}pmod {m_{n-1}} xan1(modmn1)

x ≡ a n ( m o d m n ) xequiv a_npmod{m_n} xan(modmn)

m两两互质

设 M = ∏ i = 1 n m i , M / m i ∗ t i ≡ 1 ( m o d m i ) 设M=prod_{i=1}^n m_i,M/m_i*t_iequiv 1pmod {m_i} M=i=1nmi,M/miti1(modmi)

a i ∗ ( M / m i ) ∗ t i ≡ 0 ( m o d m j ) ( i ≠ j ) a_i*(M/m_i)*t_i≡0pmod{m_j}(inot=j) ai(M/mi)ti0(modmj)(i=j)

a i ∗ ( M / m i ) ∗ t i ≡ a i ( m o d m i ) a_i*(M/m_i)*t_i≡a_ipmod{m_i} ai(M/mi)tiai(modmi)

加 a i ∗ ( M / m i ) ∗ t i 只 会 影 响 ( m o d m i ) 加a_i*(M/m_i)*t_i只会影响pmod{m_i} ai(M/mi)ti(modmi)

( m o d m i ) 时 , t i ∗ ( M / m i ) ≡ 1 , a i ∗ ( M / m i ) ∗ t i ≡ a i pmod{m_i}时,t_i*(M/m_i)equiv1,a_i*(M/m_i)*t_iequiv a_i (modmi),ti(M/mi)1,ai(M/mi)tiai

a n s = ∑ i = 1 n a i ∗ t 1 ∗ ( M / m i ) ans=sum_{i=1}^n a_i*t_1*(M/m_i) ans=i=1nait1(M/mi)

扩展欧几里得求逆元

扩 展 欧 几 里 得 求 a − 1 ( m o d m ) 扩展欧几里得求a^{-1}pmod m a1(modm)
a ∗ x ≡ 1 ( m o d m ) ( a n s = x ) a*xequiv 1pmod m(ans=x) ax1(modm)(ans=x)
a ∗ x + m ∗ y = 1 a*x+m*y=1 ax+my=1
a ∗ x + m ∗ y = gcd ⁡ ( a , m ) ( a , m 互 质 , gcd ⁡ ( a , m ) = 1 ) a*x+m*y=gcd(a,m)(a,m互质,gcd(a,m)=1) ax+my=gcd(a,m)(a,m,gcd(a,m)=1)
扩 展 欧 几 里 得 求 , a n s = x 扩展欧几里得求,ans=x ,ans=x

CODE

#include<iostream> 
#include<cstdio>
using namespace std;
void exgcd(long long a,long long b,long long &x,long long &y)
{
	if(!b){x=1,y=0;return;}
	exgcd(b,a%b,x,y);
	long long tmp=x;x=y,y=tmp-a/b*y;
	return;
}
long long niyuan(long long s,long long m)
{
	long long x,y;
	exgcd(s,m,x,y);
	return (x%m+m)%m;
}
int main()
{
	long long n,lcm=1,x,y,i,ans=0,a[21],m[21];
	for(scanf("%lld",&n),i=1;i<=n;i++)scanf("%lld%lld",&m[i],&a[i]),lcm*=m[i];
	for(i=1;i<=n;i++)ans=(ans+lcm/m[i]*a[i]*niyuan(lcm/m[i],m[i]))%lcm;
	printf("%lld",ans+(ans<0)*lcm);
	return 0;
}

最后

以上就是个性大米为你收集整理的洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元TITLE思路CODE的全部内容,希望文章能够帮你解决洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元TITLE思路CODE所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部