练一练思维缜密程度。有程式xyz+yzz=532,其中x、y、z都是整数,用c++编写一个程序,求x、y、z分别代表什么数字

解题思路:

由题意,能得出方程组:

x+y = 5;

y+z = 3;

2z = 2;    (1)

由(1)得z=1或6。一种是进位的情况,一种是不进位的情况,下面对两种情况进行分析。

一、如果不考虑进位的情况,则分析可得

z = 1;

y = 2;

x = 3;

二、考虑进位的情况,则上面方程组应进行相应的变化:

情况1:x+y = 4;(不是5是因为十位相加进1)

y+z = 12;(不是13是因为个位数相加进1)

2z = 12;

得: z = 6;

y = 6;

x = -2;

这种情况应排除,因为x=-2意味着两个数不再是相加,而是相减,则个位数的z相加也就不再适应。

情况2:x+y = 5;

y+z = 2;

2z = 12;

得: z = 6;

y = -4;

x = 9;

这种情况应排除,同情况1。

 

综上所述,得x、y、z的最终取值是:x=3,y=2,z=1;

程序设计如下:

#include <iostream>

using namespace std;

int main()
{
int x,y,z;
int num1,num2;
for(x=0; x<=5; x++)
{
for(y=0; y<=5; y++)
{
z = 1;
num1 = x*100 + y*10 + z;
num2 = y*100 + z*10 +z;
if((num1 + num2) == 532)
cout<<“x=”<<x<<“,y=”<<y<<“,z=”<<z<<endl;

//下面这几行可以不用,因为经过分析可知其不存在值
z = 6;
num1 = x*100 + y*10 + z;
num2 = y*100 + z*10 +z;
if((num1 + num2) == 532)
cout<<“x=”<<x<<“,y=”<<y<<“,z=”<<z<<endl;

}
}
return 0;
}

 

佳都新太的一道笔试题。

标签