#P1807. Mayan Dates

    ID: 808 远端评测题 1000ms 30MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>TUD Programming Contest 2003DarmstadtGermany

Mayan Dates

本题没有可用的提交语言。

描述

背景

NASA秘密建造了一台时间机器,可以穿越到过去。其首次应用是探索玛雅文明。他们从玛雅纪念碑上收集了一些重要日期,适合进一步研究。现在他们面临一个问题——需要将这些玛雅日期转换为格里高利历(公历)格式,因为这是时间机器唯一能理解的输入形式。

问题

编写一个转换程序,计算给定格里高利日期或玛雅长计数的格里高利日期、玛雅长计数和玛雅仪式日期。

玛雅长计数

玛雅历法的起始日期(第0天)是公元前3114年8月13日。从这个第0天开始,计算到某个日期的天数。1天称为KinK'in,20KinK'in为1WinalWinal,18WinalWinal为1TunTun,20TunTun为1KatunK'atun,20KatunK'atun为1BaktunBak'tun。例如:12.4.9.13.312.4.9.13.3表示自公元前3114年8月13日以来已经过去了1212BaktunBak'tun44KatunK'atun99TunTun1313WinalWinal33KinK'in(天)。

玛雅仪式日期

玛雅人的太阳年为365天,没有闰日来修正日历。一年分为18个月,每月20天,外加一个5天的月份。月份名称如下:PopPopWoWoSipSipSotzSotz'TzekTzekXulXulYaxkinYaxk'inMolMolChenCh'enYaxYaxSakSakKehKehMakMakKankinK'ank'inMuwanMuwanPaxPaxKayabK'ayabKumkuKumk'uWayebWayeb。月份的天数编号为1到19(或1到4),月份的最后一天记为下个月的第0天(例如,不写20Pop20 Pop,而是写0Wo0 Wo表示第一个月的最后一天,同样适用于5天的WayebWayeb月,其最后一天5Wayeb5 Wayeb记为0Pop0 Pop)。此外,还有一种类似于我们的星期和工作日的表示法。每天由一个1到13的数字和以下20个名称之一标记:ImixImixIkIk'AkbalAk'balKanK'anChikchanChikchanKimiKimiManikManik'LamatLamatMulukMulukOkOkChuwenChuwenEbEbBenBenIxIxMenMenKibKibKabanKabanEtznabEtz'nabKawakKawakAhawAhaw。数字和名称循环运行,因此计数如下:1Imix1 Imix2Ik2 Ik'3Akbal3 Ak'bal、...、13Ben13 Ben1Ix1 Ix2Men2 Men。因此,需要260天的周期(称为仪式年)才能再次计数到1Imix1 Imix(参见下一页的图1)。

工作日和月份表示法一起使用,如下例:2Kimi2 Kimi(工作日)10Yax10 Yax(日和月)。公元前3114年8月13日的仪式日期为4Ahaw4 Ahaw 8Kumku8 Kumk'u

格里高利日期

在我们的日历中,使用闰日。每4年插入一个闰日,但每100年不插入。此外,每400年仍会插入一个闰日。

还需要知道的是,没有公元0年。因此,公元前1年12月31日之后是公元1年1月1日。公元前最后一个闰年是公元前1年(此处适用400年规则),之后的第一个闰年是公元4年。

输入

第一行包含场景的数量。

对于每个场景,有一行包含玛雅长计数或格里高利日期,格式如下:

  • 玛雅长计数由5个非负整数组成,用点分隔。
  • 格里高利日期首先由三个整数ddmmyy组成,用斜杠分隔,且满足1d311 \leq d \leq 311m121 \leq m \leq 120<y0 < y。这些值可能填充零,也可能不填充,但ddmm永远不会超过两个字符,yy不会超过四个字符。此表示法后总是跟一个空格和“BC”或“AD”。

我们既不会询问早于公元前3114年8月13日的日期,也不会询问晚于13.0.0.0.013.0.0.0.0(玛雅长计数日历的最后一天)的日期。此外,输入的日历中不会给出无效日期。

输出

每个场景的输出以一行“Scenario #i:”开始,其中ii是从1开始的场景编号。然后,无论输入格式如何,都需要打印三行,按以下顺序表示给定日期:

  1. 格里高利日期,格式与输入描述相同,但不填充零;
  2. 玛雅长计数表示法,如前所述;
  3. 玛雅仪式日期,由四个部分组成,用单个空格分隔:工作日表示法(数字和名称),然后是月份的天数和月份名称。

在这三行之后,必须始终打印一个空行。

输入数据 1

2
13/08/3114 BC
12.19.10.6.14

输出数据 1

Scenario #1:
13/8/3114 BC
0.0.0.0.0
4 Ahaw 8 Kumk'u

Scenario #2:
28/6/2003 AD
12.19.10.6.14
9 Ix 2 Tzek

提示

来源

TUD Programming Contest 2003, Darmstadt, Germany