Inversion
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 8 Accepted Submission(s): 6
Problem Description
Give an array A, the index starts from 1.
Now we want to know Bi=maxi∤jAj , i≥2 .
Now we want to know Bi=maxi∤jAj , i≥2 .
Input
The first line of the input gives the number of test cases T; T test cases follow.
Each case begins with one line with one integer n : the size of array A.
Next one line contains n integers, separated by space, ith number is Ai .
Limits
T≤20
2≤n≤100000
1≤Ai≤1000000000
∑n≤700000
Each case begins with one line with one integer n : the size of array A.
Next one line contains n integers, separated by space, ith number is Ai .
Limits
T≤20
2≤n≤100000
1≤Ai≤1000000000
∑n≤700000
Output
For each test case output one line contains n-1 integers, separated by space, ith number is
Bi+1
.
Sample Input
2 4 1 2 3 4 4 1 4 2 3
Sample Output
3 4 3 2 4 4
Source
Recommend
就纯暴力吧。。
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
struct node{
int no;
ll num;
bool friend operator < (node x, node y)
{
return x.num<y.num;
}
}a[100005];
int main()
{
int T,n,i,j;
ll k;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(i=1;i<=n;i++) {
scanf("%lld",&k);
a[i].no=i; a[i].num=k;
}
sort(a+1,a+n+1);
for(i=2;i<=n;i++)
{
for(j=n;j>=0;j--)
{
if(a[j].no%i!=0)
{
printf("%d",a[j].num);
break;
}
}
if(i!=n) printf(" ");
}
printf("\n");
}
return 0;
}