题目:
加法变乘法
我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
思路:枚举并判断,注意细节
代码:
#include <bits/stdc++.h>
using namespace std;
int an[50];
bool islegal(int i, int j)
{
int sum(0);
for(int k=1;k<i;++k) sum += an[k];
sum += an[i]*an[i+1];
for(int k=i+2;k<j;++k) sum += an[k];
sum += an[j]*an[j+1];
for(int k=j+2;k<50;++k) sum += an[k];
if(sum==2015) return true;
return false;
}
int main()
{
for(int i=1;i<50;++i) an[i]=i;
for(int i=1;i<=46;++i) {
for(int j=i+2;j<=48;j+=1) {
if(islegal(i,j)) {
cout << i << ends << j << endl;
}
}
}
return 0;
}