1. 程式人生 > >2015藍橋杯b組c/c++ 第六題,加法變乘法

2015藍橋杯b組c/c++ 第六題,加法變乘法

加法變乘法
我們都知道:1+2+3+... + 49 = 1225
現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015
比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 =2015
就是符合要求的答案。

請你尋找另外一個可能的答案,並把位置靠前的那個乘號左邊的數字提交(對於示例,就是提交10)。

思路:這道題找到技巧之後很簡單,但是如果想不到可能就很無從下手了。(注意題目中提到只能變換兩個加號)

         首先,我們觀察加法變換到乘法的等式差距在哪,假設第一個乘號前的值為 i ,第二個為 j ,那麼加法式去掉 i,          i+1 , j , j+1,之後再加上 i *(i+1)+j*(j+1)就是乘法式了

程式碼:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j;
for(i=1;i<=49;i++)
{
for(j=i+2;j<=49;j++)
{
if(1225-i-i-1+i*(i+1)-j-j-1+j*(j+1)==2015)
{
cout<<i<<" "<<j<<endl;
}
}
}
return 0;
}