解题思路
每次从 开始一个数一个数的枚举,每发现一个好数就输出。容易发现,好 数其实很多,两个好数之间的间距也不会太大,这样就足以通过所有数据。
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,T,w[20],v[4];
bool check(int x) {
v[1]=0,v[2]=0;
int cnt=0;
while(x) {
w[cnt]=x%3;
v[w[cnt]]++;
x=x/3;
cnt++;
}
if(v[1]==v[2])return 1;
else return 0;
}
int main() {
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&m);
for(int i=n; i; i++) {
if(check(i)) {
printf("%d ",i);
m--;
}
if(m==0)break;
}
printf("\n");
}
}