c638 - 天干地支
題目描述
題目要求根據給定的西元年,計算並輸出其對應的天干和地支。天干有十個,地支有十二個,它們會按照一定的順序循環使用。輸入的年份範圍是 1800 到 2018。
解題思路
這道題的解題思路是利用取模運算來確定天干和地支。天干的循環週期是 10,地支的循環週期是 12。因此,我們可以通過計算年份對 10 和 12 的餘數,來確定對應的天干和地支。程式碼使用了一系列的 if-else 條件判斷,根據餘數的值輸出對應的天干和地支字元。
複雜度分析
- 時間複雜度: O(n),其中 n 是輸入的年份數量。因為程式碼需要對每個輸入年份進行一次計算。
- 空間複雜度: O(1),程式碼只使用了常數級別的額外空間。
程式碼
#include <iostream>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
int a;
while(cin >> a){
if(a%10==0)
cout << "庚";
else if(a%10==1)
cout << "辛";
else if(a%10==2)
cout << "壬";
else if(a%10==3)
cout << "癸";
else if(a%10==4)
cout << "甲";
else if(a%10==5)
cout << "乙";
else if(a%10==6)
cout << "丙";
else if(a%10==7)
cout << "丁";
else if(a%10==8)
cout << "戊";
else if(a%10==9)
cout << "己";
if(a%12==0)
cout << "申";
else if(a%12==1)
cout << "酉";
else if(a%12==2)
cout << "戌";
else if(a%12==3)
cout << "亥";
else if(a%12==4)
cout << "子";
else if(a%12==5)
cout << "丑";
else if(a%12==6)
cout << "寅";
else if(a%12==7)
cout << "卯";
else if(a%12==8)
cout << "辰";
else if(a%12==9)
cout << "巳";
else if(a%12==10)
cout << "午";
else if(a%12==11)
cout << "未";
cout << endl;
}
}