首页 > 代码库 > 51nod 1179:最大的最大公约数

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 }

 

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