【不定线性方程最小正数解】 贝祖定理
传送门
题意
给定一个包含\(n\)个整数元素的数列\(A\),\(A_{1},A_{2},\dots,A_{n}\)
求另一个待求的整数序列\(X\),记做\(S=\sum_{i=1}^{n}A_{i}\times X_{i}\),使得\(S>0\)且\(S\)尽可能的小
数据范围
\(1\leq n\leq 20\)
\(|X_{i}|<10^{5}\)
题解
贝祖定理能得到二元不等式\(ax+by\)的最小正数解\(gcd(a,b)\),扩展到\(n\)元不等式等于
- \(gcd(a,b,\dots,n)\)
即\(n\)个数的最大公约数
Code
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
int n;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main()
{
cin>>n;
int ans=0;
int a;
rep(i,1,n+1)
{
cin>>a;
ans=gcd(abs(a),ans);
}
cout<<ans<<endl;
}

浙公网安备 33010602011771号