蓝桥杯 — 加法变乘法(把其中两个不相邻的加号变成乘号)
题目要求如下:
加法变乘法
我们都知道: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的值)。
源代码如下: