【BZOJ1441】Min 拓展裴蜀定理
【BZOJ1441】Min
Description
给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小
Input
第一行给出数字N,代表有N个数 下面一行给出N个数
Output
S的最小值
Sample Input
2
4059 -1782
4059 -1782
Sample Output
99
题解:当n=2时,有裴蜀定理,S的最小值就是gcd(x1,x2);
当n>2时,有拓展裴蜀定理,S的最小值就是gcd(x1,x2...xn)。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,a,b;
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-') f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+(gc^'0'),gc=getchar();
return ret*f;
}
int main()
{
n=rd();
while(n--) b=abs(rd()),a=gcd(a,b);
printf("%d",a);
return 0;
}
| 欢迎来原网站坐坐! >原文链接<

浙公网安备 33010602011771号