之前一直WA,感觉也没什么错误。不知道哪里没考虑到。
/**
* Author: Gneveek
* Data: 2011-10-4
* Descripition: HDU - 1015 Safecracker
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <string>
int mypow(int a, int b);
void mySort(char *p,int len);
int main()
{
//freopen("C:\\in.txt","r",stdin);
int t;
int i,j,k,m,n;
int len;
int target;
char s[15];
char temp[8];
while(1)
{
Start:
scanf("%d",&t);
scanf("%s",s);
if(0 == t && 0 == strcmp(s,"END"))
break;
len = strlen(s);
mySort(s,len);
memset(temp,'\0',sizeof(temp));
for(i=0; i<len; i++)
{
for(j=0; j<len; j++)
{
if(j == i)
continue;
for(k=0; k<len; k++)
{
if(k == j || k==i)
continue;
for(m=0; m<len; m++)
{
if(m == k || m == j || m == i)
continue;
for(n=0; n<len; n++)
{
if(n == m || n == k || n == j || n == i)
continue;
// Boss is here!
target = (s[i]-'A'+1) - mypow(s[j]-'A'+1,2) + mypow(s[k]-'A'+1,3) - mypow(s[m]-'A'+1,4) + mypow(s[n]-'A'+1,5);
if(target == t)
{
printf("%c%c%c%c%c\n",s[i],s[j],s[k],s[m],s[n]);
goto Start;
}
}
}
}
}
}
printf("no solution\n");
}
return 0;
}
int mypow(int a, int b)
{
int result = 1;
while(b--)
result *= a;
return result;
}
void mySort(char *p,int len)
{
int i,j;
char temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-i-1;j++)
{
if(p[j]<p[j+1])
{
temp=p[j];
p[j]=p[j+1];
p[j+1] = temp;
}
}
}
}