2448 - D:最短时间

如图,已知长方体的长、宽、高以及蚂蚁的爬动速度,问:一只蚂蚁要从A点爬到B点,最快要多少秒。

题目输入

输入数据的第一行是一个整数T,表示有T组测试样例。接着是T行数据,每行三个整数a,b,c和一个实数v,分别表示长方体的长(cm)、宽(cm)、高(cm)和蚂蚁的爬动速度(cm/s)。T<100,0<a,b,c<=1000,0<v<100。

题目输出

对于每组测试样例,输出所需最短时间,结果保留小数点后2位,并独占一行。

输入/输出样例

题目输入

3
1 2 3 1
3 4 5 2
3 3 3 2

题目输出

4.24
4.30
3.35

C语言解答

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n,a,b,c;
	double len,len1,v;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d%d%lf",&a,&b,&c,&v);
		len=sqrt((a+b)*(a+b)+c*c);
		len1=sqrt((a+c)*(a+c)+b*b);
		if(len1<len) len=len1;
		len1=sqrt((b+c)*(b+c)+a*a);
		if(len1<len) len=len1;
		printf("%.2f\n",len/v);
	}
}

C++解答

#include <stdio.h>
#include <math.h>
int main()
{
	int n,i,a,b,h,T,t;
	double v,s1,s;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d%lf",&a,&b,&h,&v);
		s=sqrt(a*a+(b+h)*(b+h));
		s1=sqrt((a+b)*(a+b)+h*h);
		if(s1<s)
			s=s1;
		s1=sqrt((a+h)*(a+h)+b*b);
		if(s1<s)
			s=s1;
		printf("%.2f\n",s/v);
	}
	return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题