#include<iostream>using namespace std;int main() { /*1-----49*/ //a a+1 b>=a+2 b+1 for (int i = 1; i < 47; i++)//------47 { for (int j = i + 2; j < 49; j++)//第二个乘号 { int sum = 1225;//1-49的和为1225 sum = sum - i - (i + 1) - j - (j + 1); sum = sum + i*(i + 1) + j*(j + 1); if (sum == 2015) cout << i << endl; } } return 0;}这是第三次思考该题我得出的结果,并能解决,之前几次我总是想将数和符号分别存放在数组里,并将其按照一定的顺序排列然后在计算,那样处理会出现两个问题,一个是我们需要每次执行时对符号进行优先级判断,那么我们还得将较高的优先级的数字提出来进行计算,这样工作量很大,无法快速解决现在的方法较为简单,可执行能力强,我们试着从反方向考虑即先计算在对乘号处理,由于乘号只有两个便于处理,嵌套for循环对两个不同的情况分别计算,由于乘号只是对连续的两个运算数所以假设第一个乘号的数为i,则i+1;第二个为j则j+1。首先我们直接输入1-49的累加求和,然后剪掉i i+1 j j+1,然后加上i*(i+1) j*(j+1) 并且j>=i+2&&j<=48 i>=1&&i<=46这样思考简单处理简单运行简单
新闻热点
疑难解答