BZOJ-1441 Min(裴蜀定理)
题目描述
给出 \(n\) 个数 \(a_1,a_2,\cdots,a_n\),求一组整数序列 \(x_1,x_2,\cdots,x_n\),使得 \(s=a_1x_1+a_2x_2+\cdots+a_nx_n>0\),且 \(s\) 的值最小。
分析
裴蜀定理:设 \(a,b\) 是不全为 \(0\) 的整数,则存在 \(x,y\),使 \(ax+by=m\),其中 \(\gcd(a,b)\mid m\)。
此定理扩展到多元方程一样适用,当且仅当 \(\gcd(a_1,a_2,\cdots,a_n)\mid s\) 时,方程有解。\(s\) 的最小值即为 \(\gcd(a_1,a_2,\cdots,a_n)\)。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
ans=__gcd(ans,x);
}
cout<<abs(ans)<<endl;
return 0;
}
posted on 2020-11-27 21:38 DestinHistoire 阅读(68) 评论(0) 收藏 举报