P4549 【模板】裴蜀定理
裴蜀定理
裴蜀定理,就是关于 \(x,y\) 的不定方程 \(ax+by=c\) 有整数解的充要条件是 \(gcd(a,b)|c\),即\(c\)为\(gcd(a,b)\)的倍数,那么\(c\)最小一定取\(gcd(a,b)\)。
这是两个数,这道题求的是n个数,其实n个数也同理,就是扩展版的:
若 \(a_1,a_2...a_n\) 都是整数,且 \(\gcd(a_1...a_n)=d\) ,那么对于任意的整数 \(a_1x_1+a_2x_2...a_nx_n\) 都一定是\(d\)的倍数,特别地,一定存在整数 \(x_1...x_n\) 使 \(a_1x_1+a_2x_2+...a_nx_n=d\) 成立。
注意点
这道题有负数,所以要取绝对值。
int n;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
cin>>n;
int ans=0;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
ans=gcd(ans,abs(x));
}
cout<<ans<<endl;
//system("pause");
return 0;
}