//忘记了k = 0时,输出是3(边界条件,感谢http://blog.chinaunix.net/u/7261/article_109529_3.html) #include <iostream> #include <cmath> using namespace std; int main() { int num, k,n; scanf("%d",&num); while (num--) { scanf("%d",&k); if (k == 0) { printf("3/n");if (num) putchar('/n');continue;} k = (int)abs((double)k); int iTemp =(int) sqrt(2.0*k); for (n = iTemp; ;++n) { if ((n*(n+1) >= 2*k)&& (n*(n+1)-2*k)%4==0) break; } printf("%d/n",n); if (num) putchar('/n'); } return 0; }