加法变乘法
我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+…+1011+12+…+2728+29+…+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
思路:
根据题目可将算式分为 五个部分
1、1+2+…+9
2、1011
3、12+13+…+26
4、2728
5、29+30+…+49
最终将五个部分的结果加起来得到 2015
前提:两个不相邻的乘号 即 右边的 - 左边的 不等于 2
答案:16
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//求等差数列 n 项和
int Sn(int a, int b)
{
return (a+b)*(b-a+1)/2;
}
int check(int i, int j)
{
int temp = Sn(1,i-1)+i*(i+1)+Sn(i+2,j-1)+ j*(j+1)+Sn(j+2,49);
return temp;
}
void dispose()
{
for(int i = 1; i < 48; i++)
for(int j = i+2; j < 49; j++)
{
if((j-i) != 2) //前提
{
if(check(i,j) == 2015)
cout << i << endl;;
}
}
}
int main(int argc, char** argv) {
dispose();
return 0;
}