历届试题 加法变乘法

来源:互联网 发布:iphone5s手机壳淘宝 编辑:程序博客网 时间:2024/04/29 16:06
我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。

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

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

思路:

列举两个乘号所在位置,求乘号两边数的积,再求所有数的和

代码:

#include<iostream>#include<algorithm>using namespace std;int main(){int i,j,k=0,sum=0,cnt=0,t1[3],t2[3],a[50];for (i=1; i<=49; i++){a[i] = i;}for (i=1; i<=46; i++)//第一个乘号位置{t1[0] =a[i] * a[i+1]; //保存两数之积t1[1] = a[i]; //保存前后两个数t1[2] = a[i+1];    for (j=i+2; j<=48; j++)//第二个乘号位置{t2[0] = a[j] * a[j+1];t2[1] = a[j];t2[2] = a[j+1];sum = 0;sum+=t1[0]+t2[0];for (k=1; k<=49; k++){if (a[k]!=t1[1] && a[k]!=t1[2] && a[k]!=t2[1] && a[k]!=t2[2]){sum += a[k];}}if(sum == 2015){cnt++;cout<<t1[1]<<endl;}} }return 0;}


0 0
原创粉丝点击