iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
SideProject30

UVA題型研究系列 第 27

DAY27:Satellites

  • 分享至 

  • xImage
  •  

37 UVA10221 Satellites
地球的半徑是6440公里。 有許多衛星和小行星繞著地球運行。 如果有兩顆衛星
與地心形成一個角度,你能找出來嗎
他們之間的距離? 我們所說的距離是指
弧距和弦距。 兩顆衛星位於同一軌道
(但是,請考慮到它們是圍繞循環
路徑而不是橢圓路徑)。
輸入說明
輸入檔案將包含一個或多個測試案例。
每個測試案例由一行包含兩個整數組成
s 和 a,以及字串“min”或“deg”。 這裡 s 是距離
衛星與地球表面的角度,a 是角度
衛星與地心的距離。 可能需要幾分鐘(′
) 或以度為單位 (°
)。 記住
同一條線永遠不會同時包含分和度。
輸出說明
對於每個測試案例,列印一行包含所需距離,即弧距和弦距
兩顆衛星之間的距離分別以公里為單位。 距離將會是一個浮點數值
小數點後六位數字。
範例輸入
500 30度
700 60 分鐘
200 45度
範例輸出
3633.775503 3592.408346
124.616509 124.614927
5215.043805 5082.035982
題解:計算出2顆衛星的距離(直線距離、弧長)

#import要使用math模組,所以首先匯入math模組
import math 

#進入無窮迴圈
while True: 
    try: 
        # 從使用者獲取輸入,並將輸入的字串分割成一個列表
        a = list(input().split()) 
    except EOFError: 
        # 如果遇到EOFError(通常是使用者輸入結束的標誌),則跳出迴圈
        break 

    # 計算半徑(s),根據問題敘述,半徑 = 輸入的第一個數字 + 6440
    s = float(a[0]) + 6440 

    # 將輸入的第二個數字轉換為浮點數(a),並根據輸入的第三個字串(a[2])進行處理
    if a[2] == 'min': 
        # 如果第三個字串是'min',則將a(分鐘數)轉換為小時(除以60)
        a = float(a[1]) / 60 
    else: 
        # 如果第三個字串不是'min',則將a(角度)保持不變
        a = float(a[1]) 

    # 如果角度大於180度,則將角度調整為360度減去原角度
    if a > 180: 
        a = 360 - a 

    # 計算並印出特定的數學運算結果,格式化輸出為小數點後6位
    print("{:.6f} {:.6f}".format(a*math.acos(-1)/180*s,2*s*math.sin(a*math.acos(-1)/180/2))) 

上一篇
DAY26:GCD
下一篇
DAY28:Tell me the frequencies!
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言