题解:
首先,当1+2+...+n=x时,答案就是n
如果1+2+...+n不会等于x,那么找一个最小的n,让1+2+....+n>x并且(1+2+.....+n-x)%2=0
代码:
#include<iostream> using namespace std; int main() { int x,n=0; scanf("%d",&x); x=x<0?-x:x; while(1) { int s=n*(n+1)/2; if(s==x)break; if(s>x&&(s-x)%2==0)break; n++; } printf("%d",n); }