1. 程式人生 > >加法變乘法|2015年藍橋杯B組題解析第六題-fishers

加法變乘法|2015年藍橋杯B組題解析第六題-fishers

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