• 15年蓝桥杯第6题


    题意:

    加法变乘法

    我们都知道:1+2+3+ ... + 49 = 1225、现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015。比如:
    1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015就是符合要求的答案。
    请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

    注意:需要你提交的是一个整数,不要填写任何多余的内容。

    思路:很简单知道是把一共C(48, 2)对加号变成乘号,除去连在一起的情况,检验得到符合要求的就可以了。
    问题是。代码实现?1.两层循环可以做到?2.怎么检验?每次都是计算原式吗?讲道理是可以这样的。

    【做完之后发现确实很水。然而因为开心自己想的,还是 来一篇水水的博文吧~~~】

    附right代码:ans = 16

     1 /*
     2  加法变乘法
     3 
     4  我们都知道:1+2+3+ ... + 49 = 1225、现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015。比如:
     5  1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015就是符合要求的答案。
     6  请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
     7 
     8  注意:需要你提交的是一个整数,不要填写任何多余的内容。
     9 
    10  思路:很简单知道是把一共C(48, 2)对加号变成乘号,除去连在一起的情况,检验得到符合要求的就可以了。
    11  问题是。代码实现?1.两层循环可以做到?2.怎么检验?每次都是计算原式吗?讲道理是可以这样的。
    12  */
    13 
    14 #include <stdio.h>
    15 #include <string.h>
    16 #include <iostream>
    17 using namespace std;
    18 
    19 int num;
    20 int ans;
    21 
    22 bool check(int i, int j) {
    23     int temp = num;
    24     int num1 = i + i+1;
    25     int num2 = j + j+1;
    26     temp -= (num1 + num2);
    27     num1 = i * (i+1);
    28     num2 = j * (j+1);
    29     temp += (num1 + num2);
    30     if (temp == 2015)
    31         return true;
    32     else return false;
    33 }
    34 
    35 int main() {
    36     num = 0;
    37     ans = 0;
    38 
    39     for (int i=1; i<=49; ++i) {
    40         num += i;
    41     } // 初始值
    42 
    43     for (int i=1; i<=48; ++i) {
    44         for (int j=i+2; j<=48; ++j) {
    45             if (check(i, j) && i != 10) {
    46                 ans = i;
    47                 break;
    48             }
    49         }
    50         if (ans != 0) {
    51             break;
    52         }
    53     } // C(48, 2)中所有不相连的任意两个位置检查是否符合情况。
    54 
    55     printf("%d
    ", ans);
    56     return 0;
    57 }
    View Code
  • 相关阅读:
    ZR#330. 【18 提高 3】矿石(容斥)
    牛客NOIP提高组R1 C保护(主席树)
    BZOJ1026: [SCOI2009]windy数(数位dp)
    AtCoderBeginnerContest109题解
    BZOJ3679: 数字之积(数位dp)
    牛客NOIP普及组R1 C括号(dp)
    牛客NOIP提高组R1 A中位数(二分)
    BZOJ1576: [Usaco2009 Jan]安全路经Travel(最短路 并查集)
    ZRDay6A. 萌新拆塔(三进制状压dp)
    Python 入门教程 10 ---- Student Becomes the Teacher
  • 原文地址:https://www.cnblogs.com/icode-girl/p/5233643.html
Copyright © 2020-2023  润新知