# a004 - 文文的求婚 ### 題目連結: [a004](https://zerojudge.tw/ShowProblem?problemid=a004) ### 題目解析 * 整理題目說明可以發現此題是閏年問題 * 給定一個年份,請依照閏年的檢查方法判斷是否為閏年 ### 範例測資解讀 * 輸入 * 輸入為一個西元年份 * 輸出 * 輸出為平年/閏年 * 此題有額外的注意事項,在 a004 當中,閏年的問題為簡化版,因此不會有 1600 年以前的問題,也不會有西元前的問題 ### 其他注意事項 * 1600 年以前的問題請參考閏年精度處理 (每 400 年需要再減掉[3個閏日](https://kknews.cc/zh-tw/news/p25m9vp.html) ),不在本題範圍當中 * 請參考題目的提示,**西元年被4整除且不被100整除,或被400整除者即為閏年** * 題目中的提示使用 cin, cout 來進行輸入輸出指的是 C/C++ 語法,與 Python 寫法不同 ### 程式解析 此題的寫法處理輸出入資料使用 `while True` 的結構,進行連續 IPO 的資料存取 ``` python while True: try: #start # 程式在這裡面寫 except: break ``` * 由提示得知閏年與平年的判斷條件為 ==被4整除且不被100整除,或被400整除的即為閏年== * 條件式判斷時需要製作兩種判斷,並且有順序的關係,首先 "被4整除且不被100整除" 可以設計出以下條件 ``` python if year%4 == 0 and year%100 !=0: ``` 接著是被400整除 ``` python elif year%400 == 0: ``` 如果只有第一個條件式,則被 400 整除的情況會被排除掉,這樣的計算結果就會忽略 400, 800, 1200, 1600, 2000 等數字的情況 最後如果年份都不是以上條件,則輸出平年 ### 完整程式碼 (僅供參考) ``` python=01 while True: try: year = int(input()) if year%4 == 0 and year%100 !=0: print("閏年") elif year%400 == 0: print("閏年") else: print("平年") except: break ``` ###### tags: `基礎15題解` `APCS` `ZeroJudge`