裴蜀定理
裴蜀定理,就是关于 (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;
}