zoj3596 求一个数N的最小的一个倍数中包含M个不同的数字

ps:这种bug我要是会调试就不用这么傻逼地看一天了。。。。。。。。。。。

#include
using namespace std;
struct node{  
    int a,b,c,e;
    node(int aa=0,int bb=0,int cc=0,int ee=0){  
        a=aa;b=bb;c=cc;e=ee;
    }  
    bool operator < (const node &x) const{  
        if(a!=x.a)  
            return a q;
	q.push(node(0,0,0,-1)); //取数状态,个数,余数,哈希下标 
	int g=-1;
	vis[0][0]=1;
	while(!q.empty()){
		node fr=q.front();
		q.pop();
		int a=fr.a,b=fr.b,c=fr.c,e=fr.e;
		for(int i=0;i<10;++i){
			if(e==-1&&i==0) continue;                //积有前导0 
			if(!(a&(1<=0;--j)
					printf("%d",x[j]);  
				printf("=%d*",n);
				int j;
				for(j=p;j>=0;--j){
					if(y[j]!=0)   //去掉乘数的前导0 
						break;
				}
				for(;j>=0;--j)
					printf("%d",y[j]);  
				printf("\n");
				return;
			}	
			q.push(w);
		}	
	} 
	printf("Impossible\n"); 
}
int main(){
	int t;
	cin>>t;
	while(t--){	
		memset(vis,0,sizeof(vis));	
		memset(fa,-1,sizeof(fa));	
		cin>>n>>m;
		if(n==0){
			if(m==1)
				printf("0\n"); 
			else
				printf("Impossible\n"); 
			continue;
		}
		solve(); 
	}
	return 0;
}

你可能感兴趣的:(困难,数论)