加法變乘法|2015年藍橋杯B組題解析第六題-fishers
阿新 • • 發佈:2019-01-21
fis fisher continue 其中 示例 main pac 循環 spa
加法變乘法
我們都知道:1+2+3+ ... + 49 = 1225
現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015
比如:
1+2+3+...+1011+12+...+2728+29+...+49 = 2015
就是符合要求的答案。
請你尋找另外一個可能的答案,並把位置靠前的那個乘號左邊的數字提交(對於示例,就是提交10)。
註意:需要你提交的是一個整數,不要填寫任何多余的內容。
答案:16
思路:暴力法,兩層循環枚舉兩個乘號可能在的位置,具體請看代碼中的註釋
#include<iostream> using namespace std; int cal(int i,int j){ int ans = 0; for(int x=1;x<=50;x++){ if(x==i || x==j || x==i+1 || x==j+1){ continue; } ans+=x; } } int main(){ int sum = 0; //枚舉兩個乘號所在的位置,1~49 for(int i=1;i<=49;i++){ for(int j=1;j<=49;j++){ sum = 1225; //如果都是加號,那麽總和就是1225 //排除第一個乘號和第二個乘號位置相同的情況 if(i==j){ continue; } //減去原來用加號相連的4個數 sum -= i; sum -=(i+1); sum-=j; sum-=(j+1); sum += ((i+1)*i + (j+1)*j); //加上新的乘數 if(sum==2015){ cout<<i<<" "<<j<<" "<<endl; } } } return 0; }
加法變乘法|2015年藍橋杯B組題解析第六題-fishers