蓝桥杯 — 加法变乘法(把其中两个不相邻的加号变成乘号)

题目要求如下:


加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

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

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

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


思路:

1.  说思路其实也没什么思路,按照正常的解法一步一步的写出程序来就OK了。

2.  将1+2+3+ ... + 49其中的两个“+”变成“*”,用双重循环来遍历所有可能出现的结果。

3.  外层循环的变量i代表前一个“*”,内层循环中的j代表后一个“*”,依次遍历。

4.  用变量tmp来保存将程序中的前一个“+”改变成“*”过后的结果。代码为tmp = res = sum-(i+(i-1))+i*(i-1) ,读者需要仔细理解这句代码。

5.  用变量res来保存将程序中的后一个“+”改变成“*”过后的结果。代码为res = tmp-(j+(j-1))+j*(j-1) 。

6.  然后变量res判断的值是否为2015。如果是,则输出i和对于j的值。(题目中只要求求出前一个“*”所在的位置,即i的值)。


源代码如下:

蓝桥杯 — 加法变乘法(把其中两个不相邻的加号变成乘号)