1 条题解

  • 0
    @ 2025-10-28 11:44:45

    题目大意

    在一个外星日历系统中:

    • 一年有 mm 个月
    • 一个月有 dd
    • 一周有 ww 天(用字母 a~z 表示)
    • 已知第 111111 日是星期 a

    要求计算第 kkjjii 日是星期几。

    解题思路

    核心思想

    将目标日期转换为从基准日期(第 111111 日)开始经过的总天数,然后对一周的天数 ww 取模,得到对应的星期几。

    天数计算公式

    总天数 = (k1)×m×d+(j1)×d+(i1)(k-1) \times m \times d + (j-1) \times d + (i-1)

    各部分含义:

    • (k1)×m×d(k-1) \times m \times d:前 k1k-1 年的总天数
    • (j1)×d(j-1) \times d:当年前 j1j-1 个月的总天数
    • (i1)(i-1):当月前 i1i-1 天的天数

    星期计算

    星期 = 'a' + (总天数 % w)

    因为:

    • 111111 日是 'a'(余数为 00
    • 每过一天,星期字母循环前进一位
    • ww 取模确保在字母范围内循环

    算法步骤

    1. 读入 d,m,w,i,j,kd, m, w, i, j, k
    2. 计算总天数:tmp = (k-1)*m*d + (j-1)*d + (i-1)
    3. 计算星期:'a' + (tmp % w)
    4. 输出结果

    复杂度分析

    • 时间复杂度O(1)O(1),只有常数次运算
    • 空间复杂度O(1)O(1),只使用常数个变量

    总结

    本题是一个简单的日期计算问题,关键在于:

    1. 正确理解外星日历的规则
    2. 准确计算从基准日期到目标日期的总天数
    3. 利用模运算处理星期的循环特性

    注意使用 long long 类型防止数据溢出,因为 kk 最大为 10910^9,总天数可能很大。

    • 1

    信息

    ID
    4459
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者