负数全转化为正数来做
前N项的和 (Sn - sum)%2==0 找到第一个满足这个等式的n Sn - sum 大于零 sum = 0 是特殊数据特殊处理
#include<cstdio>
#include<cmath>
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int T;
scanf("%d",&T);
while(T--)
{
int sum,N,i,t;
scanf("%d",&sum);
sum = fabs(sum);//负数转化为正数来做
if(sum == 0)
printf("3\n");//零是特殊数据
N = sqrt(2*sum);
while(N)
{
t = N*(N+1)/2 - sum;
if(t >= 0 && t%2==0)break;
N++;
}
if(N)printf("%d\n",N);
if(T)printf("\n");
}
return 0;
}