http://acm.hdu.edu.cn/showproblem.php?pid=1015
题目输入多组数据第组包括:一个整数n和一个字符串,要求从字符串中,选五个字串且满足v - w^2 + x^3 - y^4 + z^5 = n;
c++
#include <stdio.h>
#include<string.h>
#include<math.h>
#include <iostream>
#include <deque>
using namespace std;
double n,q[28],ans;
char p[15];
int num,len;
bool sv()
{
int i,j,k,l,m;
for(i=num-1;i>=0;i--) //呵呵五重循环居然过了。。15ms
for(j=num-1;j>=0;j--)
for(k=num-1;k>=0;k--)
for(l=num-1;l>=0;l--)
for(m=num-1;m>=0;m--)
{
if(i==j||i==k||i==l||i==m||j==k||j==l||j==m||k==l||k==m||l==m)
continue;
ans=q[i]-pow(q[j],2)+pow(q[k],3)-pow(q[l],4)+pow(q[m],5);
if(fabs(ans-n)<1e-8)
{
printf("%c%c%c%c%c\n",int(q[i]+64),int(q[j]+64),int(q[k]+64),int(q[l]+64),int(q[m]+64));
return true;
}
}
return false;
}
main()
{
int i,j;
while(scanf("%lf%s",&n,p),n)
{
len=strlen(p);j=0;
for(i=0;i<26;i++)
q[i]=0;
for(i=0;i<len;i++)
q[int(p[i]-65)]=p[i]-64;
for(i=0;i<26;i++)
if(q[i])
q[j++]=q[i];
num=j;
if(!sv())
printf("no solution\n");
}
}