CDUTCM OJ 1004: 前n項和
題目描述
有一個序列,?1?2?3…?n=k,?的地方不是’+’就是’-’,你的任務是給定一個整數k,求出最小的n滿足上述條件。例如當k=12是,n為7。
- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12
輸入
多組測試資料。
每組測試資料包含1個整數k。(|k|<=10000)
輸出
對於每組測試資料,輸出最小的n.
樣例輸入
12
樣例輸出
7
思路:簡單判斷,如果是全為加號的情況十分的容易判斷,即從1~n之和剛好等於這個數便是最小值,但如果有減號的就得好好思考:首先,如果從1開始累加的和大於K 比如1+2+3+4+5=15,已經大於K值12,如果我們從中變一個+號為-號,比如再2之前的加號變為減號,那麼整個等式的值就會減少2*2=4的值(1-2+3+4+5=11),可以得出無論變化多少個+號,其等式的值均會減少變化+號右邊值的兩倍,所以將1開始累加,遇到大於K值時判斷能否被2整除,就是n的最小值。
AC程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|