#include<stdio.h>
#include<string.h>
int sum,len,step,vis[30],flag,tar;
char s[30],ans[30],anss[30];
void dfs()
{
int i,j,t;
if(step<5)
{
for(i=0;i<len;i++)
if(!vis[i])
{
t=1;
anss[step]=s[i];
step++;
for(j=0;j<step;j++)
t*=(s[i]-'A'+1);
if(step%2)
sum+=t;
else
sum-=t;
vis[i]=1;
dfs();
if(step%2)
sum-=t;
else
sum+=t;
step--;
vis[i]=0;
}
}
else
{
if(sum==tar)
{
if(flag)
{
if(strcmp(ans,anss)<0)
strcpy(ans,anss);
}
else
strcpy(ans,anss);
flag=1;
}
}
}
int main()
{
char end[10]={"END"};
while(scanf("%d%s",&tar,s)&&!(tar==0&&strcmp(s,end)==0))
{
memset(vis,0,sizeof(vis));
step=0;
flag=0;
sum=0;
len=strlen(s);
dfs();
if(flag)
printf("%s\n",ans);
else
printf("no solution\n");
}
return 0;
}
HDU 1015
最新推荐文章于 2021-01-21 21:55:50 发布