【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=6098
题目意思
给你一个长度为n的数组a;求数组b,数组bi满足i不是a数组下标的因数的最大值。
解题思路
用个结构体存储数组a,存储a的数数值和下标,然后根据a的数值排序,b数组从最大值开始往小的找,直到找到满足条件的一个为止。
代码部分
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct note
{
int a,i;
} a[100005];
bool cmp (note x,note y)
{
return x.a<y.a;
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int n;
scanf("%d",&n);
for (int i=1; i<=n; i++)
{
scanf("%d",&a[i].a);
a[i].i=i;
}
sort(a+1,a+n+1,cmp);
for (int i=2; i<=n; i++)
{
for (int j=n; j>0; j--)
{
if (a[j].i%i!=0)
{
printf("%d%c",a[j].a,i!=n? ' ':'\n');
break;
}
}
}
}
return 0;
}