首页 > 代码库 > 练习2:雨淋湿了一道题,9个数字只能看清楚4个,第一个肯定不是1 [X * (Y3 + Z)]^2 = 8MN9,求出各个数字
练习2:雨淋湿了一道题,9个数字只能看清楚4个,第一个肯定不是1 [X * (Y3 + Z)]^2 = 8MN9,求出各个数字
题目上的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 }
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。