L-母牛上柱(2020年廣東工業大學第十屆文遠知行杯新生程式設計競賽)
阿新 • • 發佈:2020-12-06
母牛剛來到廣東柱子大學時,就被學校的柱子深深地迷住。於是,母牛立下了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; }