藍橋杯 — 加法變乘法(把其中兩個不相鄰的加號變成乘號)

題目要求如下:


加法變乘法

我們都知道: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的值)。


源代碼如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章