# Number# Modulo Operator# Conditional Statements

c636 - 十二生肖

🔗 前往 ZeroJudge 原題

題目描述

題目要求根據給定的民國年份,輸出對應的生肖。民國元年為鼠年,年份範圍為 -100 到 107。

解題思路

由於生肖以 12 年為一個週期,因此可以使用取餘數運算來確定生肖。首先,處理輸入年份可能為負數的情況,將其調整到正數範圍內。然後,計算年份除以 12 的餘數,根據餘數值對應到不同的生肖。

複雜度分析

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

程式碼

#include <iostream>

using namespace std;

int main(){
	
	int i=0;
	while(cin >> i){
		if(i<=0){
			i++;
		}
		while(i<=0){
			i+=12;
		}
		if(i%12==1){
			cout << "鼠" << endl; 
		}
		else if(i%12==2){
			cout << "牛" << endl; 
		}
		else if(i%12==3){
			cout << "虎" << endl; 
		}
		else if(i%12==4){
			cout << "兔" << endl; 
		}
		else if(i%12==5){
			cout << "龍" << endl; 
		}
		else if(i%12==6){
			cout << "蛇" << endl; 
		}
		else if(i%12==7){
			cout << "馬" << endl; 
		}
		else if(i%12==8){
			cout << "羊" << endl; 
		}
		else if(i%12==9){
			cout << "猴" << endl; 
		}
		else if(i%12==10){
			cout << "雞" << endl; 
		}
		else if(i%12==11){
			cout << "狗" << endl; 
		}
		else if(i%12==0){
			cout << "豬" << endl; 
		}
	}
	
}

Discussion