您的位置:首页 > 其它

BZOJ1441: Min

2014-08-11 23:16 190 查看

1441: Min

Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 247 Solved: 153
[Submit][Status]

Description

给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小

Input

第一行给出数字N,代表有N个数 下面一行给出N个数

Output

S的最小值

Sample Input

2

4059 -1782

Sample Output

99

HINT

Source

题解:

如果两个数的最大公约数是1,那么他们可以凑成任意一个正整数,如果gcd是2的话只能凑成2的倍数,所以ans=gcd(a_i)……

代码:

var i,n,x,ans:longint;
function gcd(x,y:longint):longint;
begin
if y=0 then exit(x) else exit(gcd(y,x mod y));
end;

begin
assign(input,'input.txt');assign(output,'output.txt');
reset(input);rewrite(output);
readln(n);read(ans);
for i:=2 to n do begin read(x);ans:=gcd(ans,abs(x));end;
writeln(ans);
close(input);close(output);
end.


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: