本来是考察搜索的,结果五重循环竟然就AC了。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int EQ(int x,int y,int z,int p,int q,int t)
{
if(x-y*y+z*z*z-p*p*p*p+q*q*q*q*q==t) return 1;
else return 0;
}
int cmp(const void *a,const void *b)
{
return *(char *)b - *(char *)a;
}
int main()
{
int i,j,k,p,q,l,flag,tar;
char s[100];
while(scanf("%d %s",&tar,s)!=EOF){
flag=0;
if(tar==0 && strcmp(s,"END")==0) break;
l=strlen(s);
qsort(s,l,sizeof(s[0]),cmp);
for(i=0;i<l&&!flag;i++){
for(j=0;j<l&&!flag;j++){
if(j==i) continue;
for(k=0;k<l&&!flag;k++){
if(k==i || k==j) continue;
for(p=0;p<l&&!flag;p++){
if(p==k||p==j||p==i) continue;
for(q=0;q<l&&!flag;q++){
if(q==p||q==k||q==j||q==i) continue;
else{
if(EQ(s[i]-'A'+1,s[j]-'A'+1,s[k]-'A'+1,s[p]-'A'+1,s[q]-'A'+1,tar)==1){
printf("%c%c%c%c%c\n",s[i],s[j],s[k],s[p],s[q]);
flag=1;
break;
}
}
}
}
}
}
}
if(flag==0) printf("no solution\n");
}
return 0;
}