Pagini recente » Cod sursa (job #2629460) | Cod sursa (job #2978528) | Cod sursa (job #1543411) | Cod sursa (job #32024) | Cod sursa (job #2554357)
#include <iostream>
#include<fstream>
#define N 1000005
using namespace std;
ifstream fin("cmmdc2.in");
ofstream fout("cmmdc2.out");
int M;
int f[N];//de frecv
int n,k;
int main()
{
int i,x,j,ii,ct;
fin>>n>>k;
for(i=1;i<=n;++i)
{
fin>>x;
f[x]++;//valorile se pot repeta
M=max(x,M);
}
//divizorul maxim nu poate fi mai mare decat maximul din sir
for(i=M;i>=1;--i)
{
ct=0;
//pp ca el este divizorul maxim
//parcurgem toti multiplii lui
for(j=i;j<=M;j=j+i)//vedem cati se afla in sir
ct+=f[j];
if(ct>=k)//daca satisface conditia
{
fout<<i<<"\n";
//SAU CA SA PLEC DE LA CEL MAI MARE MULTIPLU A LUI X MAI MIC DECAT M
//POT PLECA DE LA M/X*X -->(va face partea intreaga)
for(j=M;j>=1&&k;j--)//le afisam pe cele mai mari ca sa fie si suma maxima
if(j%i==0)
for(ii=1;ii<=f[j]&&k;++ii)
{
fout<<j<<" ";
k--;
}
break;//am gasit cmmdc
}
}
return 0;
}