卡点:
1,可能是太困了,,状态差的一匹。。先是没有考虑k=0的情况,(其实当中输入过k=0,然后输出0,然而我的大脑没一点反应。。)
2,好不容易找到了这个trick,然后忘记写continue,导致k=0时总是多输出一个数。。。
#include <iostream>
#include <cstdio>
#include <cmath>
typedef long long int lli;
using namespace std;
int main(){
int t;
cin>>t;
lli k;
while(t--){
scanf("%lld",&k);
if(k == 0){
printf("3\n");
if(t)
puts("");
continue;
}
lli n = sqrt(abs(k * 2));
lli gap = n * (n+1) / 2;
while( gap < k ){
n++;
gap = n * (n+1) / 2;
}
gap -= k;
while(gap & 1){
n++;
gap += n;
}
printf("%lld\n",n);
if(t)
puts("");
}
}