编程题
保险箱解密高手 ## 来源 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 ```
查看答案
赣ICP备20007335号-2