第六届蓝桥杯JavaB组——第6题加法变乘法

解题思路:
将两个不相邻的乘号所有的可能情况依次穷举出来并判断即可
注意点:一定不要漏了任何一种情况,虽然这里的边界点都不是答案,但我们做题时的思考方式和维度一定要时刻把握准确。
答案:16

Java代码:

  1 package com.lzp.lanqiaosix.p6;
  2 
  3 /**
  4  * @Author LZP
  5  * @Date 2021/3/7 15:23
  6  * @Version 1.0
  7  * <p>
  8  * 加法变乘法
  9  * <p>
 10  * 我们都知道:1+2+3+ ... + 49 = 1225
 11  * 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
 12  * <p>
 13  * 比如:
 14  * 1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
 15  * 就是符合要求的答案。
 16  * <p>
 17  * 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
 18  * <p>
 19  * 注意:需要你提交的是一个整数,不要填写任何多余的内容。
 20  *
 21  *
 22  * 解题思路:
 23  * 将两个不相邻的乘号所有的可能情况依次穷举出来并判断即可
 24  *
 25  * 注意点:一定不要漏了任何一种情况,虽然这里的边界点都不是答案,但我们做题时的思考方式和维度一定要时刻把握准确。
 26  *
 27  * 答案:16
 28  */
 29 public class Main {
 30     public static void main(String[] args) {
 31         for (int posLeft = 1; posLeft <= 46; posLeft++) {
 32             for (int posRight = posLeft + 2; posRight <= 48; posRight++) {
 33                 // 两个乘号都在边界点
 34                 if (posLeft == 1 && posRight == 48) {
 35                     int total = 0;
 36                     for (int i = 3; i <= 47; i++) {
 37                         total += i;
 38                     }
 39                     total += (2 + 48 * 49);
 40                     if (total == 2015) {
 41                         System.out.println(posLeft + ":" + posRight);
 42                     }
 43                     // 左边的乘号在边界点,而右边的乘号不在
 44                 } else if (posLeft == 1) {
 45                     //
 46                     int totalMiddle = 0;
 47                     for (int i = 3; i < posRight; i++) {
 48                         totalMiddle += i;
 49                     }
 50 
 51                     //
 52                     int totalRight = 0;
 53                     for (int i = posRight + 2; i <= 49; i++) {
 54                         totalRight += i;
 55                     }
 56 
 57                     if (2 + totalMiddle + totalRight + (posRight * (posRight + 1)) == 2015) {
 58                         System.out.println(posLeft + ":" + posRight);
 59                     }
 60                     // 右边的乘号在边界点,而左边的乘号不在
 61                 } else if (posRight == 48) {
 62                     //
 63                     int totalLeft = 0;
 64                     for (int i = 1; i < posLeft; i++) {
 65                         totalLeft += i;
 66                     }
 67 
 68                     //
 69                     int totalMiddle = 0;
 70                     for (int i = posLeft + 2; i <= 47; i++) {
 71                         totalMiddle += i;
 72                     }
 73 
 74                     if (totalLeft + totalMiddle + (48 * 49) + (posLeft * (posLeft + 1)) == 2015) {
 75                         System.out.println(posLeft + ":" + posRight);
 76                     }
 77 
 78                 } else {
 79                     //
 80                     int totalLeft = 0;
 81                     for (int i = 1; i < posLeft; i++) {
 82                         totalLeft += i;
 83                     }
 84 
 85                     //
 86                     int totalMiddle = 0;
 87                     for (int i = posLeft + 2; i < posRight; i++) {
 88                         totalMiddle += i;
 89                     }
 90 
 91                     //
 92                     int totalRight = 0;
 93                     for (int i = posRight + 2; i <= 49; i++) {
 94                         totalRight += i;
 95                     }
 96 
 97                     int left = posLeft * (posLeft + 1);
 98                     int right = posRight * (posRight + 1);
 99 
100                     if (totalLeft + totalMiddle + totalRight + left + right == 2015) {
101                         System.out.println(posLeft + ":" + posRight);
102                     }
103                 }
104             }
105         }
106     }
107 }
View Code

 

posted @ 2021-03-07 17:32  没有你哪有我  阅读(88)  评论(0编辑  收藏  举报