杰克最近正在努力锻炼他的跳跃技能。当前他正站在X坐标轴原点上。他想跳到坐标(x,0)上,为了达到训练效果,他决定首次跳跃的距离是1,之后每一次跳跃的距离将会比上一次跳跃的距离大1个单位。每一次跳跃,他可以选择往左或者往右跳。他很好奇至少要经过多少次跳跃才能到达终点。
Input
单组测试数据。
输入数据只包含整数x(-10^9<=x<=10^9)。
Output
输出杰克到达终点所需要的最少的跳跃次数。
Input示例
2
Output示例
3
题目大意:从(x,0),每次跳跃跳跃距离+1,问至少条几次。
题解:可以吧问题倒过来:从(0,0)开始,至少跳几次跳到(x,0)。如果能够不调向直接跳到目标点当然很简单,主要是可以多次调整方向。其实画一画图就可以发现:不管怎么调整方向,起始点和目标点是不变的,也就是说明num=1+2+3……+ans>=x;那么思考一下num-x的部分去哪了(num>x)。其实可以发现(num-x)%2==0,这也是判断条件,为什么?以为num-x是多余的部分,既然是多余的部分,那么肯定会偏离x,然而最终停留在x,也就是跑远了还会在回来,画一画图就可以发现了,多余的段一定会被“去"和“回”同时覆盖,所以num-x一定是偶数。注意一定要特判n为负数和0点情况。
总结:当做不出来题时,画一画图也是一种不错的方法,说不定在动态模拟的过程中会发现题目暗藏的性质。