题目传送门
/*
暴力:纯暴力,在家水水
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
const int MAXN = 1e3 + ;
const int INF = 0x3f3f3f3f;
char s[];
int v[];
int len, tar;
bool cmp(int x, int y) {return x > y;}
void work(void)
{
for (int i=; i<len; ++i)
{
for (int j=; j<len; ++j)
{
if (i != j)
{
for (int k=; k<len; ++k)
{
if (k != i && k != j)
{
for (int l=; l<len; ++l)
{
if (l != i && l != j && l != k)
{
for (int m=; m<len; ++m)
{
if (m != i && m != j && m != k && m != l)
{
if (v[i] - pow (v[j], ) + pow (v[k], ) - pow (v[l], ) + pow (v[m], ) == tar)
{
printf ("%c%c%c%c%c\n", v[i] + 'A' - , v[j] + 'A' - , v[k] + 'A' - , v[l] + 'A' - , v[m] + 'A' - );
return ;
}
}
}
}
}
}
}
}
}
}
printf ("no solution\n");
}
int main(void) //ZOJ 1403 Safecracker
{
// freopen ("ZOJ_1403.in", "r", stdin);
while (scanf ("%d%s", &tar, &s) == )
{
if (tar == && strcmp (s, "END") == ) break;
len = strlen (s);
for (int i=; i<len; ++i) v[i] = s[i] - 'A' + ;
sort (v, v+len, cmp);
work ();
}
return ;
}
/*
v - w^2 + x^3 - y^4 + z^5 = target
*/