改編自 uva 10025 簡單的加減法

2022-05-30 04:27:11 字數 1014 閱讀 7935

time limit: 1 sec  memory limit: 128 mb

submit: 8  solved: 3

[submit][status][discuss]

bs神的數學太牛了,他經常想一些極難極坑爹數學問題作弄同學,這不愚人節快到了,他又有壞點子了。我們都知道對於式子@1@[email protected]@n,如果要求用'+'或'-'來代替@,那麼最終肯定能得到

乙個整數t,使@1@[email protected]@n=t,這是相當簡單的。但是bs神太壞了,現在給你整數t,讓你求出最小的n,使@1@[email protected]@n=t成立(@依然用'+'or'-'代替)。例如:t=12時,有

- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 ,此時n最小。

多個測試資料,乙個測試資料(t)佔一行,輸入以檔案結束為標誌。(0<=|t|<=1000000000)

對於每個t,輸出對應的最小n(n>=1),每個一行哦。

012

-298000

313

772這個題源自uva 10025改編而來,放在了我們學校的oj上,(有點侵權的意思)。。。拿到這個題真心不會,但是看完解題報告感覺這題也不是多麼難,只是我目前的水平還推不出來。廢話少說,開始寫思路

給定乙個k,不用管是負的還是正的,因為負的和正的可由變號得到。再此以正數為例講解。假定sum1=1+2+3+……+n>=k;那麼肯定存在sum2=1.2+...n=k;(...表示正負不確定)

因而可以得到 sum1-sum2=? 那麼?的判定條件是什麼呢?咱們可以推出sum2 的負號所對應的數總是sum1中減少的2倍。因而不難得到,sum1-sum2(即 sum1-k)一定是偶數。

剩下的就是暴力了。。

此題**如下:

#include #include #include using namespace std;

int main()}}

return 0;

}