洛谷 P4549 【模板】裴蜀定理

传送门


解题思路

裴蜀定理

首先第一个字读\(p\acute{e}i\)
对于一个方程\(ax+by=c\)
有整数解的条件是\(\gcd(a,b)|c\)
证明如下:

\[\because\gcd(a,b)|a\quad\gcd(a,b)|b \]

\[\therefore\gcd(a,b)|ax\quad\gcd(a,b)|by \]

\[\therefore\gcd(a,b)|ax+by \]

\[gcd(a,b)|c \]

证毕。

推广到n个数

则对于这个题,

\[\gcd(A_1,A_2,A_3\cdots A_n)|\sum_{i}^{n}(A_i*X_i) \]

所以最后答案的最小值即为前面这些数的gcd(取正数)。

AC代码

#include<iostream>
#include<cmath>
using namespace std;
int n,ans,a;
int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a;
    	ans=gcd(ans,abs(a));
	}
	cout<<ans;
    return 0;
}
posted @ 2021-06-04 00:25  尹昱钦  阅读(105)  评论(0编辑  收藏  举报