
用暴力解法,但是卡不过去,希望大佬能帮忙提点意见 谢谢(关注作为回报) my code
#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0,f=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=getchar();
}
return x*f;
}
int t;
int top;
int q[1000000];
bool check(int x,int a1,int a2)
{
int k=x;
int cnt=0;
while(k)
{
int pp;
pp=k%10;
if((pp%2)==0)
cnt++;
k/=10;
}
if(cnt!=a1)
return false;
cnt=0;
for(int i=1;i<sqrt(x);i++)
{
if(x%i==0)
cnt+=2;
if(cnt>a2)
return false;
}
int qqq=sqrt(x);
if(x==qqq*qqq)
cnt++;
if(cnt!=a2)
return false;
return true;
}
int main(){
t=read();
while(t--)
{
int n,m,k;
n=read();m=read();k=read();
int qwq=1;
top=0;
for(int i=1;i<=n;i++)
qwq*=10;
qwq--;
for(int i=qwq/10+1;i<=qwq;i++)
{
if(check(i,m,k))
q[++top]=i;
}
if(top)
{
cout<<top<<endl;
for(int i=1;i<=top;i++)
{
cout<<q[i]<<endl;
}
top=0;
}
else
{
cout<<-1<<endl;
}
}
return 0;
}