int minsteps(int z) { int n=0; int sum=0; while(sum<z || (sum-z)%2==1) { n++; sum+=n; } return n; }
第5题,AB距离为z,最少n步。
贪婪算法,走到z米,且步数最少,所以尽量正着走,当走到第n步时大于z,可以将之前的一步反着走来抵消超过z的部分,由于任意一步i反着走都会使总距离少2*i。所以第n步时和z的差值应该为偶数,反着走的那一步为(sum-z)/2,其中sum为第n步时的总距离。