fork download
  1. #include <iostream>
  2. #include <boost/math/common_factor.hpp>
  3. #include <vector>
  4. #include <algorithm>
  5. #define lli long long int
  6.  
  7. using namespace std;
  8. using namespace boost::math;
  9. void affiche(vector<lli> v)
  10. {
  11. for(int i=0;i<v.size();i++)
  12. {
  13. cout<<v[i]<<" ";
  14. }
  15. //cout<<endl;
  16. }
  17.  
  18.  
  19. lli gcd_end(vector<lli> tab,lli v)
  20. {
  21. lli pgcd=tab[0];
  22. for (int i = 1; i < tab.size(); ++i)
  23. {
  24. if(tab[i]%v!=0)
  25. {
  26. pgcd=gcd(pgcd,tab[i]);
  27. if(pgcd==1) break;
  28. }
  29. }
  30. return pgcd;
  31. }
  32. int main()
  33. {
  34. int T;
  35. cin>>T;
  36. while(T--)
  37. {
  38. int N;
  39. cin>>N;
  40. vector<lli> tab;
  41. lli k,R=0;
  42. for (int i = 0; i < N; ++i)
  43. {
  44. cin>>k;
  45. tab.push_back(k);
  46. }
  47. sort(tab.begin(),tab.end());
  48. vector<lli>::iterator it=unique(tab.begin(),tab.end());
  49. tab.resize(distance(tab.begin(),it));
  50. for (int i = tab.size()-1; i >=0 ; --i)
  51. {
  52. lli O=tab[i]+gcd_end(tab,tab[i]);
  53. if(O>R) R=O;
  54. }
  55. cout<<R<<endl;
  56. }
  57. return 0;
  58. }
Success #stdin #stdout 0s 15240KB
stdin
1
4
4 4 7 6
stdout
2  2 9
1  1 7
0  1 5
9