2020牛客多校第十场A题
题意:给一个质数,你能找到一个排列1-n-1,后一个数是前一个数的2倍或3倍,否则输出-1.
#include<bits/stdc++.h>
using namespace std;
int vis[1000005],a[1000005];
int main(){
int t,i;
cin>>t;
while(t--){
int n;
cin>>n;
memset(vis,0,sizeof(vis));
a[1]=1;vis[1]=1;
for(i=2;i<=n-1;i++){
if(!vis[2*a[i-1]%n]){//标记是否出现过
vis[2*a[i-1]%n]=1;
a[i]=2*a[i-1]%n;
}
else if(!vis[3*a[i-1]%n]){
vis[3*a[i-1]%n]=1;
a[i]=3*a[i-1]%n;
}
else break;
}
if(i!=n)cout<<"-1";
else{
for(i=1;i<=n-1;i++)
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}