以求天干为例,假如当前日期和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")

京公网安备 11010502036488号