纪年【牛客tracker 每日一题】
纪年时间限制1秒 空间限制32M知识点枚举网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述C w b c CwbcCwbc和X H R l y b XHRlybXHRlyb在学习干支纪年法。干支纪年法是中国历法上自古以来就一直使用的纪年方法。干支是天干和地支的总称。甲、乙、丙、丁、戊、己、庚、辛、壬、癸等十个符号叫天干子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥等十二个符号叫地支。为了方便程序的书写我们不妨将天干记做1 11到10 1010地支记做1 11到12 1212。通过查阅日历C w b c CwbcCwbc知道农历2018 20182018年是戊戌年X H R l y b XHRlybXHRlyb想知道农历的n nn年是什么年。0年指1年的前一年。聪明的你在仔细阅读题目后一定可以顺利的解决这个问题输入描述输入数据有多组数据每行有一个整数表示n nn。输出描述输出数据应有多行每行两个整数分别表示天干和地支的编号。示例1输入2018输出5 11示例2输入2020输出7 1备注n ∈ [ 0 , 10 18 ] n ∈ [0, 10^{18}]n∈[0,1018]。1 ≤ T ≤ 1000 1 ≤ T ≤ 10001≤T≤1000。解题思路本题核心是周期循环规律数学公式推导解决超大年份的干支纪年查询问题。天干共10个周期为10地支共12个周期为12干支纪年以60为最小循环周期。已知2018年对应天干5、地支11以此为基准推导出通用计算公式对输入的年份n通过取模运算计算其在天干、地支周期中的位置处理模运算结果为0的边界情况赋值为对应周期的最大值。算法仅需常数级数学运算时间复杂度O ( 1 ) O(1)O(1)无论年份n nn多大最高10 18 10^{18}1018、输入组数多少都能极速输出结果完美适配题目所有约束。总结核心逻辑依托天干10、地支12的固定周期用数学取模直接计算对应编号。关键操作基准年份推导公式、模运算边界值修正、常数级快速求解。效率保障无循环无枚举纯数学计算轻松处理超大年份与多组测试用例。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll n;while(cinn){ll s(n9)%12;if(s0)s12;ll w(n7)%10;if(w0)w10;coutw sendl;}return0;}