编程题
保险箱解密高手
## 来源
Mid-Central USA 2002 (ZOJ1403, POJ1248)
## 题目描述
要开Klein保险箱。保险箱密码的破解方法:要从给定的5~12个不同的大写字母组成的字符集中,选取5个,设为v,w,x,y和z,满足等式:v - w^2 + x^3 - y^4 + z^5 = target。target为一个给定的整数。在该等式中,每个字母用它在字母表中的序号替换(即A=1,B=2,...,Z=26)。组合得到的密码为vwxyz,如果有多个满足条件的密码,则取字典序最大的,所谓字典序就是在字典中的排列顺序。
例如,给定target为1,字符集为"ABCDEFGHIJKL",一个可行解为"FIECB",这是因为:6 - 9^2 + 5^3 - 3^4 + 2^5 = 1。实际上还有其他可行解,并且最终求得的解为LKEBA。
## 输入描述
输入文件包含一行或多行,每行首先是一个正整数,表示目标值target,不超过12,000,000。然后是一个空格,接下来是5~12个不同的大写字母。输入文件最后一行,目标值target为0,且字母为"END",这标志着输入结束。
## 输出描述
对输入文件每一行(除最后一行外)所表示的测试数据,输出满足条件的密码,如果存在多个满足条件的密码,则只输出字典序最大的;或者如果没有满足条件的密码,则输出"no solution"。
## 样例输入
```txt
1 ABCDEFGHIJKL
1234567 THEQUICKFROG
0 END
```
## 样例输出
```txt
LKEBA
no solution
```