题目上的X代表的未知数,不一定是同一个数字。
其实这道题,直接一推敲答案就出来了,首先,积德尾数是9,说明 X*(Y3 + Z)的值尾数是3,3的因子只有1和3,所以X只有1和3候选,但是题目说第一个肯定不是1,那就是3了。
那么括号里面Y3+Z的值就必然尾数是1,而能和3相加尾数是1的只有8,所以Z就是8了。这样就还剩下Y的值了,平方等于8000+的数字,一想大概是在90左右,
这样子,括号里面(Y3+Z)的值大概就框定在30左右,肯定比30大,但绝对不超过35,由于之前已经判断出Z是8,所以Y自然就是2了,所以得到的等式左边就是3*(23+8)即93的平方等于
8649,这样子,等式右边的值也出来了,得到:X = 3,Y = 2, Z = 8, M = 6, N = 4。
关于代码的问题,我还没想带效率足够高的算法,留着以后看看,优化优化:
#include <iostream>
using namespace std;
int main()
{
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
for (int k = ; k < ; k++)
{
for (int m = ; m < ; m++)
{
for (int n = ; n < ; n++)
{
if ((i * (j * + + k))*(i * (j * + + k)) == ( + m * + n * ))
{
cout<<"i = "<<i<<endl;
cout<<"j = "<<j<<endl;
cout<<"k = "<<k<<endl;
cout<<"m = "<<m<<endl;
cout<<"n = "<<n<<endl;
}
}
}
}
}
}
return ;
}
运行结果: