如果以0000年为甲子年,则2020年应该是:
2020 % 10 = 0
2020 % 12 = 4
2020 = (0, 4),但实际上2020年是庚子年(6, 0)
天干:0 -> 6,偏移量+6
地支:4 -> 0,偏移量-4
所以在计算公式上加上偏移量
天干:(n + 6) % 10
地支:(n - 4) % 12
对于地支,要保证结果不是负数,所以要变为:(n - 4 + 12) % 12
#include <bits/stdc++.h>
using namespace std;
string tiangan[] = {"jia", "yi", "bing", "ding", "wu", "ji", "geng", "xin", "ren", "gui"};
string dizhi[] = {"zi", "chou", "yin", "mao", "chen", "si", "wu", "wei", "shen", "you", "xu", "hai"};
int main()
{
int n;
cin >> n;
cout << tiangan[(n + 6) % 10] << dizhi[(n + 8) % 12] << endl;
return 0;
}