蚂蚁的难题(X)
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
蚂蚁又遇到一个难题。
有一个圆锥,地面半径为A(单位:cm),高度为H(单位:cm),现在蚂蚁位于其中一条母线R与底面的交点P处,母线R的中点M有一袋旺仔小馒头,饿极了的蚂蚁非常想吃,而且,母线R的正对面有另一条母线L(位置如图所示),上面布满了香槟,思量之后蚂蚁决定先取香槟,再拿小馒头,最后回到P点。但是,问题来了,笨笨的蚂蚁不知道要怎么走了,因为懒惰的蚂蚁肯定想最省体力,现在请你来写个程序,帮助他找到其中走的最短距离是多少。
Ps:香槟得到一次即可。得到母线L、点M对应物品的方式为到达或经过。母线L两端点处也有香槟。
(PI=3.1415926)
-
输入
-
有多组测试数据。
每组测试数据一行,由两个数A,H组成。(0<A,H<100000)。A,H均为正整数。
输出
-
输出最少消耗多少体力。
结果保留两位小数。
样例输入
-
1 2
-
3 4
-
1000 1000
样例输出
-
4.43
-
10.00
-
2828.43
-
-
//三角形求边公式c*c = a*a+b*b-2*a*b*cos(C); #include <stdio.h> #include <math.h> const double PI = 3.1415926; int main() { double r, l, h, temp, angle; while(scanf("%lf%lf", &r, &h) != EOF) { l = sqrt(r*r+h*h); angle = (2*PI*r/l); temp = sqrt(l*l*5/4-l*l*cos(angle))+l/2; if(angle >= PI) { printf("%.2lf\n", 2*l); } else { printf("%.2lf\n", temp); } } return 0; }
-
有多组测试数据。