题目大意:求一个数到另一个数需要走的步长,下一步和前一步的差的绝对值要小于等于1,而且最后一步必须是1
解题思路:这样就是一个对称的步长了,从1走到最大的n然后对称走的话,就能走n平方个距离了,然后再用距离和n平方比较,如果距离等于n平方,就走2*n-1个步,如果距离-n平方小于等于n就在走的时候加一个小于等于n的值,如果大于n就要加上两个,最多只能大2n,所以不必担心不够
#include<cstdio>
int main() {
int test, num1, num2;
scanf("%d", &test);
for(int i = 0; i < test; i++) {
scanf("%d %d", &num1, &num2);
int distance = num2 - num1;
// printf("distance is %d\n",distance);
int move = 0;
int n;
for(int j = 0 ;; j++)
if(j * j <= distance)
continue;
else {
n = j - 1;
break;
}
if(distance == 0) {
printf("0\n");
continue;
}
move = 2 * n - 1;
// printf("move is %d\t n is %d\n",move, n);
if(distance == n * n) {
printf("%d\n", move);
continue;
}
if(distance - n * n <= n)
move++;
else
move = move + 2;
printf("%d\n", move);
}
return 0;
}