# Conditional Statements# Basic Input/Output# While Loop

d070 - 格瑞哥里的煩惱 (0 尾版)

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的年份是否為閏年,並根據格瑞哥里曆的規則輸出 "a leap year" 或 "a normal year"。輸入以 0 結尾,0 不參與判斷。

解題思路

根據格瑞哥里曆的閏年判斷規則,如果年份能被 400 整除,或者能被 4 整除但不能被 100 整除,則為閏年。否則為平年。程式使用 while 迴圈讀取年份,直到輸入為 0 為止。在迴圈內部,使用條件判斷式檢查年份是否符合閏年的條件,並輸出相應的結果。

複雜度分析

  • 時間複雜度: O(n),其中 n 是輸入的年份數量。
  • 空間複雜度: O(1),程式只使用了常數級別的額外空間。

程式碼

#include <iostream>
using namespace std; 
int a;
int main(){
	while(cin>>a){
		if(a==0)break;
		if(a%400==0||a%4==0&&a%100!=0)
		  cout<<"a leap year"<<endl;
		else
		  cout<<"a normal year"<<endl;
	}
	return 0; 
}

Discussion