题目:从1开始加,一直到和sum刚好大于等于k停止,然后看两个数的差是不是偶数,不是就接着加下一位直到差是偶数,因为如果要让sum减一个数刚好等于k,那么sum的减少量其实是这个数的2倍,因此如果sum和k相差是奇数就无法满足。负数是一样的。
#include <stdio.h>
int main() {
long long k, t, i;
scanf("%lld", &t);
while (t--) {
scanf("%lld", &k);
if (k < 0)
k = -k;
long long sum = 0;
for (i = 1;; i++) {
sum += i;
if (sum >= k && (sum - k) % 2 == 0)
break;
}
printf("%lld\n", i);
if (t)
printf("\n");
}
return 0;
}