2503. 岁律更新:天道历法测算

1000ms 256MB 简单
题目描述
天元 2022 年 1 月 1 日,适逢**土曜**(星期六),万象更新。在仙界历法中,每一天的流转都遵循严密的规则。 现给定未来的某一天(年、月、日),请你通过法阵演算,计算出这一天与“天元 2022 年 1 月 1 日”**相差多少天**,并推算出那一天是**星期几**。 **注意:** 1. 相差天数定义:今天与明天相差 1 天。 2. 星期表示:星期一至星期日分别使用整数 `1 ~ 7` 表示。 3. 历法规则:需考虑闰年(2 月有 29 天)与平年(2 月有 28 天)的差异。 - 闰年判定:年份能被 4 整除且不能被 100 整除,或者能被 400 整除。
输入格式
- 三个正整数,使用空格隔开,分别表示年、月、日。 - 数据保证输入的日期是合法的,且一定在 2022 年 1 月 1 日之后。
输出格式
- 第一行:一个正整数,表示相差的天数。 - 第二行:星期的数字值,并在其前加符号 `*`(例如星期四输出 `*4`)。
样例 1
输入 (Input)

                    
输出 (Output)

                    
1. **分段累加法**: - **跨年累加**:先计算从 2022 年到目标年份前一年($year-1$)的总天数。平年加 365,闰年加 366。 - **跨月累加**:计算目标年份中,从 1 月到目标月份前一月($month-1$)的总天数。需根据该年是否为闰年确定 2 月的天数。 - **当日累加**:加上目标日期的天数 $day$,再减去初始日期的 1 天(因为 1 月 1 日是起始点)。 2. **星期推算**: - 初始日期是星期六(6)。 - 目标星期 = `(6 + 相差天数 - 1) % 7 + 1`。 - *技巧提示*:在处理星期 7(周日)时,注意取模运算的逻辑,确保结果在 $1 \sim 7$ 之间。 3. **数据范围**:年份可能较大,累加天数建议使用 `int` 或 `long long`。
自测终端 stdin → stdout
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
训练中心
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字