专栏文章

题解:P4549 【模板】裴蜀定理

P4549题解参与者 3已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@mipan5jk
此快照首次捕获于
2025/12/03 08:53
3 个月前
此快照最后确认于
2025/12/03 08:53
3 个月前
查看原文

内容

ax+by=cax+by=c 是一个关于 x,yx,y 的整系数二元一次方程有整数解的充要条件是 gcd(a,b)  c\gcd(a,b)\ |\ c

证明

我们可以先只考虑 ax+by=1ax+by=1 的解。
  1. gcd(a,b)=d>1\gcd(a,b)=d>1 则左右模 dd 不同余。
    对于 ax+by=cax+by=cdd 不为 cc 的因子则同样无解。
  2. gcd(a,b)=1\gcd(a,b)=1 则我们考虑 ax+by=1ax+by=1 左右同时模 bbax1(mod b)ax\equiv 1(\mathrm{mod}\ b),因为 {1,2,,b}\left\{1,2,\dots,b \right\} 为模 bb 的完系,且 gcd(a,b)=1\gcd(a,b)=1,所以 {a,2a,,ab}\left\{a,2a,\dots,ab\right\} 也为模 bb 的完系。所以必存在 x0{1,2,,b}x_0∈\left\{1,2,\dots,b\right\} 使得 ax01(mod b)ax_0\equiv 1(\mathrm{mod}\ b)。我们可以记 ax0=1+kbax_0=1+kb 代入 ax+by=1ax+by=1y=ky=-k。所以 ax+by=1ax+by=1 有整数解。到这里我们可以发现其实这也就相当于 ax+by=cax+by=c 有整数解,因为你把 ax+by=1ax+by=1 的整数解乘上 cc 就好了。
这样充分性就证明完毕了!
接下来上代码:
CPP
#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
#define i_will signed
#define ak main
#define IMO ()
#define int long long
#define double long double
I AK IOI;
int n,ans,x;
i_will ak IMO{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	//freopen("","r",stdin);
	//freopen("","w",stdout);
	cin>>n>>ans; 
	ans=abs(ans);
	while(n--){
		cin>>x;
		ans=__gcd(ans,abs(x));
	}
    cout<<ans;
	i_ak ioi;
}
亲测可过,请勿抄袭!

评论

3 条评论,欢迎与作者交流。

正在加载评论...