P8738 [蓝桥杯 2020 国 C] 天干地支 题解

· · 题解

2044 年为一个轮回的起点即甲子年,60年一轮回,而 2044 \bmod 60 = 4,故易知公元 n 年在一个轮回中的位置为 p = (n + 56) \bmod 60,则天干编号为 p \bmod 10,地支编号为 p \bmod 12

int main() {
    dR(int, n);
    n = (n + 56) % 60;
    const char *heaven[]{"jia", "yi", "bing", "ding", "wu", "ji", "geng", "xin", "ren", "gui"},
               *earth[]{"zi", "chou", "yin", "mao", "chen", "si", "wu", "wei", "shen", "you", "xu", "hai"};
    writeln(heaven[n % 10], earth[n % 12]);
    return 0;
}