示例1:
输入
2
3
5
输出
1 2
1 2 4 3
题意:
就是求一个数x小的所有正整数(这些正整数可以被2或3整除),并且把这些正整数枚举出来。
顺子用的方法是暴力枚举法时间复杂度大约是log₂ⁿ~log₃ⁿ左右。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=2e6+5;
int a[N],b[N];
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=1;i<n;i++){
a[i]=0;
}int temp=1,bj=0;
for(int i=1;i<n;i++){
a[temp]=1;b[i]=temp;
if(i==n-1)continue;
if(a[temp*2%n]==0){
temp=temp*2%n;
}else if(a[temp*3%n]==0){
temp=temp*3%n;
}else {
printf("-1\n");bj=1;break;
}
}
if(bj==0)for(int i=1;i<n;i++){
printf("%d ",b[i]);
}printf("\n");
}
return 0;
}