裴蜀定理

裴蜀定理

\(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\) 时最小。

原题链接 P4549

这还需要代码?
#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;
}
posted @ 2024-09-23 17:01  sad_lin  阅读(3)  评论(0编辑  收藏  举报