zoukankan      html  css  js  c++  java
  • 练习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 }

    运行结果:

  • 相关阅读:
    202002知识点
    爬取思想流程
    测试
    运维
    设计模式重温
    ?March2020疑问点
    最方便简洁的设置Sublime编辑预览MarkDown
    rime中州韵输入法安装及配置
    Deepin更新Sublime并取消更新提示
    关于在线教学软件一些发现和思考
  • 原文地址:https://www.cnblogs.com/leisc/p/3840569.html
Copyright © 2011-2022 走看看