UVA-10025
题意:给你一个数字k,求最少要多少个数字使得 1 ? 2 ? 3 ? 4 ……?n =k
其中的 ? 填 + -。
解题思路:我们先可以把所有的问号都用 + 填入。sum = 1+2+……+n,我们改变其中一个某个数 i 的+号为 -号,则sum -=i*2。可见第一个使得sum>=k 且 (sum-k) mod 2 == 0 满足的n就是我们想要的解。
/************************************************************************
> File Name: UVA-10025.cpp
> Author: Narsh
>
> Created Time: 2016年07月14日 星期四 17时29分09秒
***********************************************************************/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int t,k,n,sum;
int main () {
scanf("%d",&t);
while (t--) {
scanf("%d",&k);
if (k < 0) k=-k;
sum = 0;
n = 0;
while (true) {
n++;
sum+=n;
if (sum >= k && (sum - k)%2==0 ) break;
}
printf("%d\n",n);
if(t) printf("\n");
}
}