题解 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 imes 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<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#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;
}

原文地址:https://www.cnblogs.com/Wuhen-GSL/p/13535482.html