加法變乘法


加法變乘法
我們都知道:1+2+3+ ... + 49 = 1225
現在要求你把其中兩個不相鄰的加號變成乘號,使得結果爲2015
比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
10就是符合要求的答案。
請你尋找另外一個可能的答案,並把位置靠前的那個乘號左邊的數字提交(對於示例,就是提交10)。
注意:需要你提交的是一個整數,不要填寫任何多餘的內容。


#include<iostream>
using namespace std;
int main() 
{
	/*1-----49*/
	//a a+1 b>=a+2 b+1

	for (int i = 1; i < 47; i++)//------47
	{	
	
		for (int j = i + 2; j < 49; j++)//第二個乘號
		{
			int sum = 1225;//1-49的和爲1225
			sum = sum - i - (i + 1) - j - (j + 1);
			sum = sum + i*(i + 1) + j*(j + 1);

			if (sum == 2015)
				cout << i << endl;
		}
	
	}
	return 0;
}




這是第三次思考該題我得出的結果,並能解決,之前幾次我總是想將數和符號分別存放在數組裏,並將其按照一定的順序排列然後在計算,那樣處理會出現兩個問題,一個是我們需要每次執行時對符號進行優先級判斷,那麼我們還得將較高的優先級的數字提出來進行計算,這樣工作量很大,無法快速解決
現在的方法較爲簡單,可執行能力強,我們試着從反方向考慮即先計算在對乘號處理,由於乘號只有兩個便於處理,嵌套for循環對兩個不同的情況分別計算,由於乘號只是對連續的兩個運算數所以假設第一個乘號的數爲i,則i+1;第二個爲j則j+1。
首先我們直接輸入1-49的累加求和,然後剪掉i i+1 j j+1,然後加上i*(i+1)  j*(j+1)   並且j>=i+2&&j<=48  i>=1&&i<=46
這樣思考簡單處理簡單運行簡單

發佈了56 篇原創文章 · 獲贊 82 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章