蚂蚁的难题

来源:互联网 发布:webgl高级编程 pdf 编辑:程序博客网 时间:2024/05/17 07:03

 蚂蚁的难题


题目描述

蚂蚁又遇到一个难题。
有一个圆锥,地面半径为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 23 41000 1000

样例输出

4.4310.002828.43

提示

发挥想象,画图分析,几何计算(注意:圆锥展开后的角度)


高和半径定义成double

我的代码:

#include <stdio.h> 
#include <math.h> 
#define PI 3.1415926 
int main() 

    double R,H,k,l,i; 
    while(scanf("%lf%lf",&R,&H)!=EOF) 
    { 
  
        l=sqrt(R*R+H*H); 
        i=(2*PI*R/l); 
        k=sqrt(l*l*5/4-l*l*cos(i))+l/2; 
        if(i>=PI) 
        { 
            printf("%.2lf\n",2*l); 
        } 
        else
        { 
            printf("%.2lf\n",k); 
        } 
    } 
    return 0; 

注意精度问题。。。。。。


0 0
原创粉丝点击