【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; }
| 欢迎来原网站坐坐! >原文链接<