ConstStar
发布于 2022-09-04 / 106 阅读 / 0 评论 / 0 点赞

蓝桥杯2015年B组:加法变乘法

问题描述

我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+…+1011+12+…+2728+29+…+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。

解题方案

代码

#include <iostream>

using namespace std;


int main() {
    for (int i = 2; i <= 49; ++i) {
        for (int j = i + 1; j <= 49; ++j) {

            int all[47];
            int index = 0;
            for (int k = 1; k <= 49; ++k) {
                if (k == j || k == i) {
                    all[index - 1] *= k;
                } else {
                    all[index++] = k;
                }
            }

            int sum = 0;
            for (int k = 0; k < index; ++k) {
                sum += all[k];
            }

            if (sum == 2015) {
                cout << "i=" << i - 1 << " j=" << j - 1 << endl;
            }

        }
    }

    return 0;
}

输出

i=10 j=27
i=16 j=24

结论

答案为16


评论