[BZOJ] 1441 Min

题意:给一堆数ai,求S=Σxiai,使得S最小且为正整数

 

根据裴蜀定理,一定存在ax+by=gcd(a,b),同理可以推广到n个整数

也就是说,在不考虑正负的情况下,所有数的gcd就是所求

 

#include<iostream>
#include<cstdio>

using namespace std;

typedef long long ll;
inline ll rd(){
  ll ret=0;char c;
  while(c=getchar(),!isdigit(c));
  while(isdigit(c))ret=ret*10+c-'0',c=getchar();
  return ret;
}

ll n,a;

ll gcd(ll x,ll y){return y==0?x:gcd(y,x%y);}

int main(){
  n=rd();a=rd();
  for(int i=2;i<=n;i++) a=gcd(a,rd());
  printf("%lld",a);
}

 

posted @ 2018-09-14 17:20  GhostCai  阅读(84)  评论(0编辑  收藏  举报