将 Haab 日期换算为总天数,再按 Tzolkin 的 13、20、260 周期取模。
OJ: noi_openjudge
题目 ID: ch0113-07
难度:普及-
标签:模拟日期映射python
日期: 2026-07-30 23:01
题意
把 Haab 历日期转换为 Tzolkin 历日期。
思路
建立 Haab 月名到编号的映射,先算从世界开始经过的总天数。Tzolkin 的数字周期为 13、名称周期为 20、年份周期为
代码
Python代码
python
haab_months = ["pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"]
tzolkin_days = ["imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"]
month_index = {month: index for index, month in enumerate(haab_months)}
count = int(input())
print(count)
for _ in range(count):
day, month, year = input().split()
total_days = int(year) * 365 + month_index[month] * 20 + int(day[:-1])
print(total_days % 13 + 1, tzolkin_days[total_days % 20], total_days // 260)复杂度
每个日期时间复杂度和额外空间复杂度均为
总结
跨历法转换的核心是先统一到从起点开始的总天数。