LCSR 题1求助
  • 板块灌水区
  • 楼主LRIXI
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/3/11 17:51
  • 上次更新2023/10/28 06:51:34
查看原帖
LCSR 题1求助
533129
LRIXI楼主2022/3/11 17:51

用暴力解法,但是卡不过去,希望大佬能帮忙提点意见 谢谢(关注作为回报) 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;
}
2022/3/11 17:51
加载中...