题解 P4549 【模板】裴蜀定理

裴蜀定理内容

\[设 (a , b) = d,则对任意整数 x, y,有 d | (ax + by) 成立 \]

\[特别地,一定存在 x , y 满足 ax + by = d \]

等价的表述:

\[不定方程 ax + by = c(a, b, c 为整数) 有解的充要条件为 (a, b)|c \]

推论:

不定方程\(ax+by+cz+...+nm=f(其中a,b,c...n,f为整数)\)有解的充要条件是\(f为gcd(a,b,c,...,n)\)的整数倍

对于此题不难发现,\(S=\sum_{i=1}^nA_i\times X_i\) 是一个不定方程,且已知一组系数\(A_i\)

则有S是\(gcd(A_1,A_2,...A_n)\)的整数倍,当\(S=gcd(A_1,A_2,...A_n)\)时,S取得最小值

所以此题求\(gcd(A_1,A_2,...A_n)\)即可

//AC代码
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
int n,x;
int main()
{
	scanf("%d",&n);
	int ans=0;
	for(int i=1;i<=n;++i){
		scanf("%d",&x);
		x=abs(x);
		if(x==0)continue;
		ans=__gcd(ans,x);
	}
	printf("%d",ans);
	return 0;
}

你可能感兴趣的:(题解 P4549 【模板】裴蜀定理)