记录编号 38906 评测结果 AAAAAAAAAA
题目名称 [RQNOJ 166] 隐藏的信息 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.083 s
提交时间 2012-06-21 10:50:41 内存使用 76.61 MiB
显示代码纯文本
#include <iostream> 
#include <cmath> 
#include <cstring> 
#include <string> 
#include <cstdio> 
#include <cstdlib> 
#include <iomanip> 
#include <set> 
#include <algorithm> 
#define MAXN 0x7fffffff 
using namespace std; 
int a[10],b,c,d,l,m,n,x,y,z,test,as[20000000],ac,k[10];
long long t;
bool bo;
int Compare(const void*elem1,const void*elem2)
{
	return *(int *)elem1 -*(int *)elem2;
}
int gcd(int x,int y) 
{     
	if (x==0) return y;     
	if (y==0) return x;     
	if (x<y)     
	{         
		test=x;      
		x=y;       
		y=test;    
	}     
	if (x%y==0) return y;  
	return gcd(y,x%y); 
} 
void DFS(int w)
{
	int i,j;
	if (w==c)
	{
		if (test%t==0)
		{
			as[ac]=test;
			ac++;
			bo=true;
		}
		return;
	}
	for (i=0;i<c;i++)
		if (a[k[i]]==0) 
		{
			a[k[i]]++;
			test+=(k[i]*(int)pow(10.0,(double)w));
			DFS(w+1);
			a[k[i]]--;
			test-=(k[i]*(int)pow(10.0,(double)w));
		}
}
int main(void) 
{    
    freopen("lcsa.in","r",stdin); 
    freopen("lcsa.out","w",stdout); 
	scanf("%d",&b);
	while (b!=0)
	{
		k[c]=b%10;
		c++;
		b/=10;
	}
	scanf("%d%d",&l,&m);
	t=l;
	for (d=l+1;d<=m;d++)
	{
		n=gcd(t,d);
		t*=d;
		t/=n;
	}
	test=0;
	DFS(0);
	qsort(as,ac,sizeof(int),Compare);
	for (d=0;d<ac;d++) cout<<as[d]<<endl;
	if (bo==false) cout<<"No answer";
    fclose(stdin);
    fclose(stdout); 
    return 0; 
}