加法变乘法|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;
}
posted @ 2019-01-21 18:04  fishers  阅读(315)  评论(0编辑  收藏  举报