# Conditional Statements# Loops# Basic Math

d069 - 格瑞哥里的煩惱 (t 行版)

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的年份是否為閏年,並輸出 "a leap year" 或 "a normal year"。閏年的判斷規則為:除了不是400的倍數的100的倍數以外,四的倍數的年份均為閏年。

解題思路

程式碼使用迴圈讀取多組年份,對於每個年份,根據格瑞哥里曆的閏年判斷規則進行判斷。首先檢查年份是否為4的倍數,如果是,則進一步檢查是否為100的倍數。如果年份是100的倍數,則再檢查是否為400的倍數。只有當年份是400的倍數時,才判定為閏年。

複雜度分析

  • 時間複雜度: O(t * 1),其中 t 是輸入的年份數量。因為對於每個年份,只需要進行常數次數的判斷。
  • 空間複雜度: O(1),程式碼只使用了常數個變數。

程式碼

#include <iostream>

using namespace std;

int main (){
	
	int n=0,year=0;
	bool a=false;
	while(cin >> n){
		for(int i=0;i<n;i++){
			cin >> year;
			if(year%4==0){
				a=true;
			}
			if(year%100==0){
				a=false;
			}
			if(year%400==0){
				a=true;
			}
			if(a==true){
				cout << "a leap year" << endl;
			}
			if(a==false){
				cout << "a normal year" << endl;
			}
			a=false;
			
		}
	}
	
	
}

Discussion