题意:

给定一个数k,为了使这个? 1 ? 2 ? ... ? n = k式子成立,必须把问号换成+或者-。

思路:

先累加,累加到sum至少要超过k,然后用sum减去k,如果得到的结果是偶数的话,那么就是成功找到。解释一下原因:你把式子中的某个co数前面的符号变成减号的话,那么变化之后的sum比原来少了2*co,因为sum不仅少加了co,而且还被减去了co,所以sum-k一定是偶数。只要一找到这个偶数,那么co肯定可以凑出来。


#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
long long a;
int T;
scanf("%d",&T);
while(T--){
scanf("%lld",&a);
long long sum=0;
if(a<0) a=-a;
for(long long i=1;;i++){
sum+=i;
if(sum>=a&&(sum-a)%2==0){
printf("%lld\n",i);
break;
}
}
if(T) printf("\n");
}

return 0;
}