概述
洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元
TITLE
思路
CRT
x ≡ a 1 ( m o d m 1 ) xequiv a_1pmod {m_1} x≡a1(modm1)
x ≡ a 2 ( m o d m 2 ) xequiv a_2pmod {m_2} x≡a2(modm2)
… … …… ……
x ≡ a n − 1 ( m o d m n − 1 ) xequiv a_{n-1}pmod {m_{n-1}} x≡an−1(modmn−1)
x ≡ a n ( m o d m n ) xequiv a_npmod{m_n} x≡an(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/mi∗ti≡1(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)∗ti≡0(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)∗ti≡ai(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)∗ti≡ai
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=1nai∗t1∗(M/mi)
扩展欧几里得求逆元
扩
展
欧
几
里
得
求
a
−
1
(
m
o
d
m
)
扩展欧几里得求a^{-1}pmod m
扩展欧几里得求a−1(modm)
a
∗
x
≡
1
(
m
o
d
m
)
(
a
n
s
=
x
)
a*xequiv 1pmod m(ans=x)
a∗x≡1(modm)(ans=x)
a
∗
x
+
m
∗
y
=
1
a*x+m*y=1
a∗x+m∗y=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)
a∗x+m∗y=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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复