题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1015
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int comp(const void *a, const void *b){
return *(int*)b-*(int*)a;
}
int main(){
int n;
char s1[13];
int a[13];
int i, j, k, p, q, strLen;
int flag = 0;
while(scanf("%d %s", &n, s1)!=EOF){
if(n==0&&(strcmp(s1,"END"))==0){
break;
}
strLen = strlen(s1);
for(i=0; i<strLen; i++){
a[i] = s1[i]-'A'+1;
}
qsort(a, strLen, sizeof(int), comp);
flag = 0;
for(i=0; i<strLen; i++){
for(j=0; j<strLen; j++){
if(j == i) continue;
for(k=0; k<strLen; k++){
if(k==j || k==i) continue;
for(p=0; p<strLen; p++){
if(p==k || p==j || p==i) continue;
for(q=0; q<strLen; q++){
if(q==p || q==k || q==j || q==i) continue;
if(( a[i]
- a[j]*a[j]
+ a[k]*a[k]*a[k]
- a[p]*a[p]*a[p]*a[p]
+ a[q]*a[q]*a[q]*a[q]*a[q])==n){
flag = 1;
break;
}
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(flag == 0){
printf("no solution\n");
}
else{
printf("%c", a[i]+'A'-1);
printf("%c", a[j]+'A'-1);
printf("%c", a[k]+'A'-1);
printf("%c", a[p]+'A'-1);
printf("%c", a[q]+'A'-1);
printf("\n");
}
}
return 0;
}