裴蜀定理
裴蜀定理
\(i|j\) 表示 \(i\) 是 \(j\) 的约数。
\(ax+by=c\),\(x,y\in \mathbb{Z}\),该等式成立的条件为 \(gcd(a,b)|c\)。
省流:
\[ax+by=gcd(a,b)
\]
接下来证明一下:
设 \(s\) 为 \(gcd(a,b)\),显然 \(s|a\),\(s|b\)。
因为 \(x,y\in \mathbb{Z}\),所以得到 \(s|ax\),\(s|by\)。
原等式可知 \(c\) 一定为 \(a\) 和 \(b\) 的公约数的倍数,
所以等式成立,\(c\) 取 \(s\) 时最小。
这还需要代码?
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n,x,ans;
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
ans=__gcd(ans,abs(x));
}
cout<<ans;
return 0;
}