更正经题解|寻找排列
2024-04-08 17:08:10
发布于:广东
19阅读
0回复
0点赞
思维水题
全题用时最少AC代码(比AC君还少):
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int a[200005];
vector<int> l;
int main() {
int T;
scanf("%d",&T);
while (T--) {
int n,k;
scanf("%d %d",&n,&k);
a[1]=k,a[n]=1;
for (int i=2;i<n;i++) a[i]=i;
if (n%k==0) {
if (k!=n) {
a[k]=n;
int x=k,ans=k,last=k;
while (x<n) {
if (n%x==0) {
if (x%last==0) {
swap(a[last],a[x]);
last=x;
}
ans=x;
}
x+=k;
}
}
for (int i=1;i<=n;i++) {
printf("%d ",a[i]);
}
}else {
printf("-1 ");
}
printf("\n");
}
return 0;
}
这里空空如也
有帮助,赞一个