题意:
初始在 0 0 0点,第 i i i次跳跃可以跳 i i i的距离,可以选择向右或者向左跳,求最少多少次可以跳到 x x x点。
− 1 e 9 ≤ x ≤ 1 e 9 -1e9\le x\le 1e9 −1e9≤x≤1e9
思路:
我们贪心的加,一直到 s u m > n sum>n sum>n,假设此时 s u m − n sum-n sum−n是偶数,那么我们可以将第 s u m − n 2 \frac{sum-n}{2} 2sum−n步向反方向跳。
让后就做完了。
#include<bits/stdc++.h>
using namespace std;
int x;
int main() {
int ans=0;
cin>>x;
x=abs(x);
int sum=0;
while(sum<x||(sum-x)%2==1) {
ans++;
sum+=ans;
}
cout<<ans<<endl;
return 0;
}