Pagini recente » Cod sursa (job #2813790) | Cod sursa (job #83292) | Cod sursa (job #1596123) | Cod sursa (job #2491270) | Cod sursa (job #874477)
Cod sursa(job #874477)
#include<cstdio>
using namespace std;
int marcate[30001];
void ciur(){
int d=2;
while(d*d<=30000){
for(int i=d;i<=30000/d;i++)
marcate[i*d]=1;
if(d==2)
d++;
else
d+=2;
while(marcate[d]==1)
d+=2;
}
return;
}
int prime[15100],nrp=0;
struct solutie {int a; int b;};
solutie sol[15100];
int main()
{
FILE *in,*out;
in=fopen("secvente1.in","r");
out=fopen("secvente1.out","w");
marcate[1]=1;
ciur();
int D,n,p,k,nr,st,sf,cont=0;
fscanf(in,"%d",&D);
for(int i=1;i<=D;i++){
fscanf(in,"%d%d%d",&n,&p,&k);
nrp=0;
for(int j=1;j<=n;j++){
fscanf(in,"%d",&nr);
if(nr%p==0){
while(nr%p==0)
nr/=p;
if(nr==1)
prime[++nrp]=j;
}
if(marcate[nr]==0)
prime[++nrp]=j;
}
st=1;
sf=k;
cont=0;
while(sf<=nrp){
sol[++cont].a=prime[st];
sol[cont].b=prime[sf];
st++;
sf++;
}
fprintf(out,"%d\n",cont);
for(int j=1;j<=cont;j++)
fprintf(out,"%d %d\n",sol[j].a,sol[j].b);
}
fclose(in);
fclose(out);
return 0;
}