https://www.luogu.com.cn/problem/CF11B
1.能通过向一边累加直接得到的点肯定是最短的设为y,例10=1+2+3+4
2.不能直接累加得到的,设为x
3.若y-x偶数,则在跳跃的时候,则第(y-x)/2步为相反方向,例8这个点 (10-8)/2步为1;
则8=-1+2+3+4四步,
4.若y-x是奇数,那么继续跳跃,直到y-x为偶数为止
5.用一层循环模拟上面过程
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n<0)n=-n;
int ans=0;
for(int i=1,t=1;n&&!ans;i++,t+=i){
if(t==n||(t>n&&!((t-n)%2)))
ans=i;
}
cout<<ans<<endl;
}