题目大意:一条长度为n的路,要求后一步是前一步的+1,+0,-1之一,并且规定第一步最后一步都是1.求最少步数。
解题思路:即1……kk……1,(最好情况);如果不刚好的话分两种可能,一种是路的总长度与步数长度总和相差len<=k+1,这就只要在步数中在加一步len就行,放到可以放的位置就可以,放哪里不需要考虑。第二种:如果k + 1<len <= 2*(k + 1);类似前面的需要多加两步步数。
#include<stdio.h>
int n, a, b;
int main() {
scanf("%d", &n);
while(n--) {
scanf("%d %d", &a, &b);
long long len = b - a;
if(len > 0) {
for (long long i = 0; ; i++) {
if(len - i*(i + 1) <= i + 1 ) {
printf("%lld\n", 2 * i + 1);
break;
}
else if(len - i*(i + 1) <= 2*(i + 1) ) {
printf("%lld\n", 2 * i + 2);
break;
}
}
}
else printf("0\n");
}
return 0;
}