求大佬看看错在哪里了,测试结果都正确,但提交为wrong answer,求指导
题目:要找到组合,您必须选择满足以下等式的五个字母v,w,x,y和z,其中每个字母由其在字母表中的序号位置替换(A = 1,B = 2,... ,Z = 26)。然后组合是vwxyz。如果有多个解决方案,则该组合是按字典顺序最大的组合,即在字典中最后出现的组合。 v - w ^ 2 + x ^ 3 - y ^ 4 + z ^ 5 =目标
“例如,给定目标1和字母集合ABCDEFGHIJKL,一种可能的解决方案是FIECB,因为6 - 9 ^ 2 + 5 ^ 3 - 3 ^ 4 + 2 ^ 5 = 1.在这种情况下实际上有几种解决方案,并且组合结果证明是LKEBA.Klein认为在雕刻中编码组合是安全的,因为它可能需要数月的努力来尝试所有即使你知道这个秘密也是可能的。当然,计算机当然不存在。“
样本输入:
1 ABCDEFGHIJKL
11700519 ZAYEXIWOVU
3072997 SOUGHT
1234567 THEQUICKFROG
0结束
样本输出:
LKEBA
YOXUZ
GHOST
no solution
代码
#include<stdio.h>
#include<string.h>
#include<math.h>
#define EPSILON 0.1
int main()
{
double num1;
int flag,v,w,x,y,z,len;
char a[20]= {0};
double b[20]= {0};
for(int i=0; i<20; i++)
{
a[i]=0;
}
while(scanf("%lf %s",&num1,a)!=EOF)
{
if(num1==0&&strcmp(a,"END")==0)
{
break;
}
flag=0;
//把字符型数据组转换成数字型
for(int i=0; i<20; i++)
{
b[i]=a[i];
}
len=strlen(a);
for(int j=0; j<len; j++)
{
b[j]=b[j]-64;
}
for(v=len-1; v>=0; v--)
{
for(w=len-1; w>=0; w--)
{
for(x=len-1; x>=0; x--)
{
for(y=len-1; y>=0; y--)
{
for(z=len-1; z>=0; z--)
{
if(w!=v&&x!=v&&x!=w&&y!=v&&y!=w&&y!=x&&z!=v&&z!=w&&z!=x&&z!=y)
{
//num2=b[v]-pow(b[w],2)+pow(b[x],3)-pow(b[y],4)+pow(b[z],5);
if(fabs(num1-(b[v]-pow(b[w],2)+pow(b[x],3)-pow(b[y],4)+pow(b[z],5)))<EPSILON)
{
printf("%c%c%c%c%c\r\n",a[v],a[w],a[x],a[y],a[z]);
flag=1;
v=w=x=y=z=-1;
}
}
}
}
}
}
}
if(flag==0)
{
printf("no solution\r\n");
}
}
return 0;
}