以求天干为例,假如当前日期和2018年的时间差为 d, 那么就相当于在2018年的天干的基础上移动d的距离,然后把最终移动的结果映射到1~10即可;

对于映射 x 到1~10的求法就是(x-1)%10+1

可以想象将原数轴向左平移一格,变成求映射到(0,9),计算取余后的结果,再向右平移回去

#include <iostream>
using namespace std;
#define int long long

signed main() {
    int n;
    int base=2018;
    int l=5,r=11;
    while(cin>>n){
        int d=n-base;
        int u_l=(l+(d%10+10)%10-1)%10+1;
        int u_r=(r+(d%12+12)%12-1)%12+1;
        cout<<u_l<<' '<<u_r<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")