版权声明:虽然是个蒟蒻但是转载还是要说一声的哟 https://blog.csdn.net/jpwang8/article/details/83381373
Description
给出n个数(A1…An)现求一组整数序列(X1…Xn)使得S=A1 * X1+…An * Xn>0,且S的值最小
Solution
裴蜀定理:
对于形如
这样a、b、c都为正整数的不定方程,有解的条件是
即当
时取得最小正整数
本题我们可以两两合并,最后得到
显然k取1的时候最小
Code
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)
int gcd(int x,int y) {
return !y?x:gcd(y,x%y);
}
int main(void) {
int n,x; scanf("%d",&n);
scanf("%d",&x); int GCD=x;
rep(i,2,n) {
scanf("%d",&x);
GCD=gcd(x,GCD);
}
printf("%d\n", abs(GCD));
return 0;
}