历届试题 加法变乘法

    xiaoxiao2021-03-25  98

    我们都知道: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; }

    转载请注明原文地址: https://ju.6miu.com/read-19352.html

    最新回复(0)