加法变乘法|2015年蓝桥杯B组题解析第六题-fishers

加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+...+1011+12+...+2728+29+...+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

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

答案:16

思路:暴力法,两层循环枚举两个乘号可能在的位置,具体请看代码中的注释

#include<iostream>
using namespace std;

int cal(int i,int j){
    int ans = 0;
    for(int x=1;x<=50;x++){
        if(x==i || x==j || x==i+1 || x==j+1){
            continue;
        }
        ans+=x;
    }
}

int main(){
    int sum = 0;
    //枚举两个乘号所在的位置,1~49 
    for(int i=1;i<=49;i++){
        for(int j=1;j<=49;j++){
            sum = 1225; //如果都是加号,那么总和就是1225 
            //排除第一个乘号和第二个乘号位置相同的情况 
            if(i==j){
                continue;
            }
            
            //减去原来用加号相连的4个数 
            sum -= i;
            sum -=(i+1);
            sum-=j;
            sum-=(j+1);
            sum += ((i+1)*i + (j+1)*j); //加上新的乘数 
            if(sum==2015){
                cout<<i<<" "<<j<<" "<<endl; 
            }
        }
    }
    
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/fisherss/p/10300220.html