DestinHistoire

 

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)    收藏  举报

导航