用C/C++代码算出满足上述条件的值。
我们首先来分析一下:
step0:我们可以得到如下方程:
step1:由方程(1)、(3)、(6)可得
我们可以把x1、x5、x6看成自变量,x2、x8、x7看成对应的函数,这样只要x1、x5、x6确定了,x2、x8、x7也随之确定。
step2:再由公式(4)(5)可得:
同理我们把x1、x6、x2、x7看成自变量(可以由step1确定),x3、x4看成对应的函数。
最后,我们发现方程(3)还没用到,我们已经可以确定所有的变量了,因此,方程(3)可以用来做验证。
经过以上三步推导我们可以得到变量之间的拓扑关系:
这样,我们只要给定变量x1、x6、x5的值,其他变量的值随之确定,因此,三成循环即可搞定。
最后,我们由以上的推导过程,容易确定x1、x6、x5的取值范围
下面,我们给出程序代码:
#include<stdio.h>
void f()
{
int x1,x2,x3,x4,x5,x6,x7,x8;
for(x1=0; x1<=4; x1++)
{
for(x5=0; x5<=5; x5++)
{
for(x6=0; x6<=9-x5; x6++)
{
x2=13-x1;
x8=5-x5;
x7=(9-x5-x6);
x3=(4-x1)*x6;
if(x7!=0)
{
if((x2-4)%x7==0)
x4=(x2-4)/x7;
else continue;
if(x3-x4*x5==4)
{
printf("******************************\n");
printf("%3d + %3d - 9= 4\n",x1,x2);
printf(" + - -\n");
printf("%3d - %3d * %3d= 4\n",x3,x4,x5);
printf(" / * -\n");
printf("%3d + %3d - %3d= 4\n",x6,x7,x8);
}
else continue;
}
else continue;
}
}
}
}
int main()
{
f();
return 0;
}