题目上的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。
关于代码的问题,我还没想带效率足够高的算法,留着以后看看,优化优化:
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 for (int i = 2; i < 10; i++) 6 { 7 for (int j = 0; j < 10; j++) 8 { 9 for (int k = 0; k < 10; k++) 10 { 11 for (int m = 0; m < 10; m++) 12 { 13 for (int n = 0; n < 10; n++) 14 { 15 if ((i * (j * 10 + 3 + k))*(i * (j * 10 + 3 + k)) == (8009 + m * 100 + n * 10)) 16 { 17 cout<<"i = "<<i<<endl; 18 cout<<"j = "<<j<<endl; 19 cout<<"k = "<<k<<endl; 20 cout<<"m = "<<m<<endl; 21 cout<<"n = "<<n<<endl; 22 } 23 } 24 } 25 } 26 } 27 } 28 return 0; 29 }
运行结果:
练习2:雨淋湿了一道题,9个数字只能看清楚4个,第一个肯定不是1 [X * (Y3 + Z)]^2 = 8MN9,求出各个数字
时间: 2024-11-10 13:44:08