C语言题(步数)求代码步数(steps.cpp)数轴上有两个点x和y,移动规则如下:第一步和最后一步的间距必须为1,除第一步外,每一步的间距都必须比前一步的间距最多相差1(其差值的绝对值为0或1

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 01:22:18
C语言题(步数)求代码步数(steps.cpp)数轴上有两个点x和y,移动规则如下:第一步和最后一步的间距必须为1,除第一步外,每一步的间距都必须比前一步的间距最多相差1(其差值的绝对值为0或1
xTmOP+73N{gmײ֕1EQAEH%7#ӷ}/&6iwsy9vԇmoz9lo8{'9ˤ{V(Ôut= 3xߪ;ksVf?e ԰7OSU|\uzY©:z?[ՆU?֛9B;]֣쾴vkۺ}Á{Jnc=1석nP,s` +9_mj,Cބ7[jU'a#&Hžp5" jl;}ɤ~8WtkGPr)0od?ϐD 0(=7+m!3GBum`?-A $ad"Q6#(IH4~f`DfX`,)㹞=1k#Z|RxĤI'),I9iX!9 ЗM}}@Ҝ"pi^ rO(` EDגjkSY8Q≬d\R C䊪I.h *XICe40(VjT7_hB9.*ғWy}

C语言题(步数)求代码步数(steps.cpp)数轴上有两个点x和y,移动规则如下:第一步和最后一步的间距必须为1,除第一步外,每一步的间距都必须比前一步的间距最多相差1(其差值的绝对值为0或1
C语言题(步数)求代码
步数(steps.cpp)
数轴上有两个点x和y,移动规则如下:第一步和最后一步的间距必须为1,除第一步外,每一步的间距都必须比前一步的间距最多相差1(其差值的绝对值为0或1).编程计算从x移动到y至少需要多少步.
输入格式:
第一行为正整数t(≤100),表示数据组数.接下来t行,每行两个整数x和y(0≤x≤y≤2^31-1).
输出格式:
对于每组数据,输出最少的移动步数.

C语言题(步数)求代码步数(steps.cpp)数轴上有两个点x和y,移动规则如下:第一步和最后一步的间距必须为1,除第一步外,每一步的间距都必须比前一步的间距最多相差1(其差值的绝对值为0或1
#include
#include
int abs (int x)
{
return x > 0 ? x : -x;
}
int main()
{
int n,a,b,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
n = abs(b - a);
int tmp = (int)(sqrt(n*1.0));
int step = tmp + tmp - 1;
int total = tmp * tmp;
if(n - total >= tmp + 1)
step += 2;
else if(n - total > 0)
step ++;
printf("%d\n",step);
}
return 0;
}