L-母牛上柱(2020年广东工业大学第十届文远知行杯新生程序设计竞赛)

母牛刚来到广东柱子大学时,就被学校的柱子深深地迷住。于是,母牛立下了flag,要在大学4年爬遍学校的柱子。同时,每个柱子顶部都有一个最佳的俯瞰学校的观测点。母牛在爬柱子时,会从柱子底爬到柱子顶的最佳观测点。为了尽快爬完大学所有的柱子,母牛想知道他爬一根柱子最短路径。

为方便计算,我们将柱子简化成如上图所示的圆柱。S点为母牛在柱子底部所在的位置,α为OS与平面XOZ的夹角;T为柱子顶部的最佳观测点的位置,β为O'T与平面XOZ的夹角;R为圆柱的半径,H为圆柱的高。

圆周率π取3.1415926535

输入描述:

第一行包含一个整数T(T<=100),表示输入样例数。

接下来T行每行包含α,β,R,H四个整数。

(α,β的单位为度,0 < α,β < 360,0 < R,H < 1000)

输出描述:

输出共T行,每行为母牛从S点爬到T点的最短路径的平方,结果保留两位小数。

输入

2
0 0 50 50
0 90 50 50

输出

2500.00
8668.50

备注:

圆周率π取3.1415926535



感想

一道很水的数学题,忘记侧面是连在一块的wa了两次(蒻)

AC代码
#include<iostream>
#include<cmath>
using namespace std;
const double PI=3.1415926535;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int a,b,r,h;
        scanf("%d%d%d%d",&a,&b,&r,&h);
        double ans=0;
        if(fabs(a*PI/180-b*PI/180)<=PI)
            ans=h*h+(a*PI/180-b*PI/180)*r*(a*PI/180-b*PI/180)*r;
        else
            ans=h*h+(2*PI-fabs(a*PI/180-b*PI/180))*r*(2*PI-fabs(a*PI/180-b*PI/180))*r;
        printf("%.2lf\n",ans);
    }
    return 0;
}

 

 
posted @ 2020-12-06 16:40  TheWeak  阅读(91)  评论(2编辑  收藏  举报