利用优先级队列。
int get_gcd(){
priority_queue<int, vector<int>, greater<int>> q;
for(int i = 0;i<n;i++){
q.push(b[i]);
}
int maxl = 1;
while(1){
int flag = 0;
priority_queue<int, vector<int>, greater<int> > p;
while(!q.empty() && !q.top() ){
q.pop() ;
}
if(q.empty() ) break;
int u = q.top() ;
q.pop() ;
p.push(u);
while(!q.empty() ){
int t = q.top() ;
q.pop() ;
t %= u;
if(t) flag = 1;
p.push(t);
}
if(!flag){
maxl = u;
break;
}
}
return maxl;
}