11,850
社区成员
发帖
与我相关
我的任务
分享
--环行跑道周长为400米.甲乙两人同时同地顺时针沿环行跑道跑步.甲52米/分钟.乙46米/分钟.假设甲乙两人每跑100米停下休息一分钟.问甲多长时间追上乙?
--时间精度以0.1秒计
declare @d1 decimal(15,5),@d2 decimal(15,5),@i int,@j int,@k int
select @i=0,@d1=0,@d2=0,@j=0,@k=0
while @d1-@d2<400
begin
set @i=@i+1
if convert(int,@d1+52.0/600)/100 > convert(int,@d1)/100 or @j>0
begin
if @j=0
begin
set @d1=@d1+52.0/600
set @j=@j+1
end
else if @j=600
set @j=0
else
set @j=@j+1
end
else
set @d1=@d1+52.0/600
if convert(int,@d2+46.0/600)/100 > convert(int,@d2)/100 or @k>0
begin
if @k=0
begin
set @d2=@d2+46.0/600
set @k=@k+1
end
else if @k=600
set @k=0
else
set @k=@k+1
end
else
set @d2=@d2+46.0/600
end
select @i/600,@d1,@d2,@j,@k --最后输出为分钟
/*
----------- --------------------------------------- --------------------------------------- ----------- -----------
139 4800.04461 4400.01463 1 395
*/
--时间精度以秒计
declare @d1 decimal(15,5),@d2 decimal(15,5),@i int,@j int,@k int
select @i=0,@d1=0,@d2=0,@j=0,@k=0
while @d1-@d2<400
begin
set @i=@i+1
if convert(int,@d1+52.0/60)/100 > convert(int,@d1)/100 or @j>0
begin
set @j=@j+1
if @j=61
begin
set @j=0
set @d1=@d1+52.0/60
end
end
else
set @d1=@d1+52.0/60
if convert(int,@d2+46.0/60)/100>convert(int,@d2)/100 or @k>0
begin
set @k=@k+1
if @k=61
begin
set @k=0
set @d2=@d2+46.0/60
end
end
else
set @d2=@d2+46.0/60
end
select @i/60,@d1,@d2 --最后输出为分钟
/*
----------- --------------------------------------- ---------------------------------------
136 4699.95141 4299.48536
*/