记录编号 |
38906 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[RQNOJ 166] 隐藏的信息 |
最终得分 |
100 |
用户昵称 |
TBK |
是否通过 |
通过 |
代码语言 |
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;
}