以2018年对应天干5、地支11为基准,先算偏移量d=n-2018,再分别对10和12取模(负数补回)即可得到目标年的天干与地支编号。

void solve(){
    ll n;
    while(cin>>n){
        ll d=n-2018;
        ll a=(4+d)%10;
        if(a<0){
            a+=10;
        }
        ll b=(10+d)%12;
        if(b<0){
            b+=12;
        }
        cout<<a+1<<" "<<b+1<<endl;
    }
}

笨比楼主wa了一发还以为是数据太大了,原来是忘了输入数据有多组数据