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

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

TITLE

思路

CRT

x ≡ a 1 ( m o d m 1 ) x\equiv a_1\pmod {m_1} xa1(modm1)

x ≡ a 2 ( m o d m 2 ) x\equiv a_2\pmod {m_2} xa2(modm2)

… … ……

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

x ≡ a n ( m o d m n ) x\equiv a_n\pmod{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_i\equiv 1\pmod {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≡0\pmod{m_j}(i\not=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_i\pmod{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_i\equiv a_i (modmi),ti(M/mi)1,ai(M/mi)tiai

扫描二维码关注公众号,回复: 13266943 查看本文章

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*x\equiv 1\pmod 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;
}

猜你喜欢

转载自blog.csdn.net/weixin_46975572/article/details/117134494