51nod 1179:最大的最大公约数

51nod 1179:最大的最大公约数

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1179

题目大意:给出$n$个数,求两两最大公因数的最大值.

数论

套路题,参见http://www.cnblogs.com/barrier/p/6656410.html

代码如下:

 1 #include <iostream>
 2 #define N 1000000
 3 using namespace std;
 4 typedef long long ll;
 5 ll n,t,vis[N+1],f[N+1];
 6 int main(void){
 7     std::ios::sync_with_stdio(false);
 8     cin>>n;
 9     for(int i=0;i<n;++i){
10         cin>>t;
11         vis[t]++;
12     }
13     for(ll i=1;i<=N;++i)
14         for(ll j=1;i*j<=N;++j)if(vis[i*j])
15             f[i]+=vis[i*j];
16     for(ll i=N;i>=0;--i)if(f[i]>1){
17         cout<<i;
18         return 0;
19     }
20 }

 

posted @ 2017-04-04 03:02  barriery  阅读(244)  评论(0编辑  收藏  举报