zcmu-1120: 前n項和(思維)
阿新 • • 發佈:2018-12-15
1120: 前n項和
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 267 Solved: 122 [Submit][Status][Web Board]
Description
有一個序列,?1?2?3…?n=k,?的地方不是’+’就是’-’,你的任務是給定一個整數k,求出最小的n滿足上述條件。例如當k=12是,n為7。
- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12
Input
多組測試資料。
每組測試資料包含1個整數k。(|k|<=10000)
Output
對於每組測試資料,輸出最小的n.
Sample Input
12
Sample Output
7
for example,1+2+3+4+5 = 15,如果要表示的k是< 15 的,那麼通過把前面的+改成-來實現,那麼可以發現,如果原來是+x,改成了-x,最後的結果比原來相差了兩倍的x,所以可以發現,如果全部加起來時得到的sum > k了,就要判斷他們的差是否為偶數,是偶數則可以通過改變+為-來做到~
#include <cstdio> #include <cmath> #include<iostream> using namespace std; int main() { int k,sum; while (scanf("%d",&k) != EOF) { sum = 0; k = abs(k); int i = 0; while(1) { i++; sum += i; if(sum == k) { cout<<i<<endl; break; } else if(sum > k) { if((sum-k)%2 == 0) { cout<<i<<endl; break; } } } } return 0; }