bzoj 1441: Min 裴蜀定理
题目:
给出\(n\)个数\((A_1, ... ,A_n)\)现求一组整数序列\((X_1, ... X_n)\)使得\(S=A_1*X_1+ ...+ A_n*X_n > 0\),且\(S\)的值最小
题解:
貌似这是什么裴蜀定理...
总之多试几个样例就会发现答案是所有数的gcd
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
inline void read(int &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline int gcd(const int &a,const int &b){
return b == 0 ? a : gcd(b,a%b);
}
int main(){
int n,ans;read(n);
for(int i=1,x;i<=n;++i){
read(x);x = abs(x);
if(i == 1) ans = x;
else ans = gcd(ans,x);
}printf("%d\n",ans);
getchar();getchar();
return 0;
}
人就像命运下的蝼蚁,谁也无法操控自己的人生.