题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6098
将A数组按值从大到小排序,对于每个下标i暴力找到最大的不被i整除的数。
#include<bits/stdc++.h>
#include<algorithm>
#include<vector>
using namespace std;
int b[100050];
struct bb
{
int k,p;
} a[100050];
int cmp(bb a,bb s)
{
return a.k<s.k;
}
int main()
{
int t,o;
scanf("%d",&t);
while(t--)
{
o=-1;
memset(a,0,sizeof a);
memset(b,0,sizeof b);
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i].k);
a[i].p=i;
}
sort(a+1,a+n+1,cmp);
for(int i=2; i<=n; i++)
{
for(int j=n; j>=1; j--)
{
if(a[j].p%i!=0)
{
b[i]=a[j].k;
break;
}
}
}
for(int i=2; i<=n; i++)
{
if(i!=2)
printf(" ");
printf("%d",b[i]);
}
printf("\n");
}
}