1. 程式人生 > 實用技巧 >L-母牛上柱(2020年廣東工業大學第十屆文遠知行杯新生程式設計競賽)

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