2015年蓝桥杯省赛c组填空题 加法变乘法 知识点:模拟,枚举

102 阅读1分钟

image.png

思路

第一步首先枚举两个乘号的位置

第一个乘号从第一个位置开始枚举:

46 ×47 + 48 ×49
第一个乘号最多到46后面,要给+号和第二个×号留一个位置,第二个×号最多到48后面

第二步 求出满足差值的i,j

1+2+3+4 +…… +i+(i+1)+……+j+(j+1)+……+48+49=1225

现在变为:

1+2+3+4 +…… +i*(i+1)+……+j*(j+1)+……+48+49=2550

大部分都是相同的,不同的部分就是乘法那部分 ,

它们之间的差值就是:

i(i+1)i+(i+1)+j(j+1)j+(j+1)=25501225i*(i+1)-(i+(i+1))+j*(j+1)-(j+(j+1))=2550-1225

code

#include<bits/stdc++.h>
using namespace std;
int main()
{
	for(int i=0;i<=46;i++)        //46 ×47 + 48 ×49    第一个称号最多枚举到46 
	{
		for(int j=i+2;j<=48;j++)  //46 ×47 + 48 ×49 第一个乘号 后面还有一个+号一个乘号,所以i+2 
		{
			if(i*(i+1)-(i+i+1)+ j*(j+1)-(j+j+1)==2015-1225)
			cout<<i <<" "<<j<<endl;
		}
	}
	return 0;
}

image.png