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; }