2016腾旭研发工程师笔试题

用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;
}

猜你喜欢

转载自blog.csdn.net/wzl1217333452/article/details/48253699