Pagini recente » Cod sursa (job #477764) | Cod sursa (job #463876) | Cod sursa (job #1352612) | Cod sursa (job #649344) | Cod sursa (job #1691366)
#include <cstdio>
using namespace std;
int i,j,nr,n,r,b[26004],c[24],e[30004],k,p,q,x,f[100004],d,k1;
bool a[300004];
int main()
{
freopen ("secvente1.in","r",stdin);
freopen ("secvente1.out","w",stdout);
scanf ("%d", &d);
b[1]=2;
nr=1;
for (i=3;i<=300000;i+=2)
{
if (a[i]==false)
{
b[++nr]=i;
if (i<=1000)
{
for (j=i;(j*i)<=300000;j+=2)
a[i*j]=true;
}
}
}
for (i=1;i<=d;i++)
{
scanf ("%d %d %d", &n, &p, &k1);
r=1;
c[1]=1;
x=1;
q=0;
while (x<=(30000/p))
{
x*=p;
c[++r]=x;
}
for (j=1;j<=nr;j++)
{
for (k=1;k<=r;k++)
{
if (b[j]<=(30000/c[k]))
e[b[j]*c[k]]=i;
}
}
for (j=1;j<=n;j++)
{
scanf ("%d", &x);
if (e[x]==i)
f[++q]=j;
}
if (q>=k1)
{
printf ("%d\n", q-k1+1);
for (j=1;j<=(q-k1+1);j++)
printf ("%d %d\n", f[j], f[j+k1-1]);
}
else
printf ("%d\n", 0);
}
return 0;
}