读书笔记之编程之美 - 4.10 数字哑谜和回文

好久没有写代码了,今天练习练习第二个问题,代码如下:

   1: #include 
   
   
   2:  
   3: using namespace std;
   4:  
   5: int main()
   6: {
   7:     int m1, m2, m3, m4, m5;
   8:     int n1, n2, n3, n4, n5;
   9:  
  10:     for (m1 = 0; m1 < 10; m1++)
  11:     {
  12:         for (m2 = 0; m2 < 10; m2++)
  13:         {
  14:             if (m2 == m1) continue;
  15:             for (m3 = 0; m3 < 10; m3++)
  16:             {
  17:                 if (m3 == m2 || m3 == m1) continue;
  18:                 for (m4 = 0; m4 < 10; m4++)
  19:                 {
  20:                     if (m4 == m3 || m4 == m2 || m4 == m1) continue;
  21:                     for (m5 = 0; m5 < 10; m5++)
  22:                     {
  23:                         if (m5 == m4 || m5 == m3 || m5 == m2 || m5 == m1) continue;
  24:  
  25:                         for (int n = 2; n < 10; n++)
  26:                         {
  27:                             if (m1 * n > 9)
  28:                             {
  29:                                 continue;
  30:                             }
  31:  
  32:                             n1 = m5 * n % 10;
  33:                             if (n1 != m1)
  34:                             {
  35:                                 continue;
  36:                             }
  37:                             n2 = m5 * n / 10 + m4 * n % 10;
  38:                             if (n2 % 10 != m2)
  39:                             {
  40:                                 continue;
  41:                             }
  42:                             n3 = m4 * n / 10 + m3 * n % 10 + n2 / 10 ;
  43:                             if (n3 % 10 != m3)
  44:                             {
  45:                                 continue;
  46:                             }
  47:                             n4 = m3 * n / 10 + m2 * n % 10 + n3 / 10;
  48:                             if (n4 % 10 != m4)
  49:                             {
  50:                                 continue;
  51:                             }
  52:                             n5 = m2 * n / 10 + m1 * n % 10 + n4 / 10;
  53:                             if (n5 < 10 && n5 % 10 != m5)
  54:                             {
  55:                                 continue;
  56:                             }
  57:  
  58:                             cout << m1 << m2 << m3 << m4 << m5 << " x " << n 
  59:                                  << " = " << m5 << m4 << m3 << m2 << m1 << endl;
  60:                         }
  61:                     }
  62:                 }
  63:             }
  64:         }
  65:     }
  66:     system("pause");
  67:     return 0;
  68: }

验证了一下思路,编码过程还是有很多问题的,也不是很优雅,但总算可以解出答案了。

21978 x 4 = 87912

扩展问题:

问题二:25 x 25 = 625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值