SP13405 APCER - MayanCalendar

题目描述

玛雅文明在艺术、建筑、数学和天文学方面都颇具成就。最近,由于对其长历法的误解,关于2012年12月21日将发生末日的传言甚嚣尘上——但显然这并没有发生!请记住,这一天是星期五。由于人类有可能在这样的日子遭到毁灭,我们将每月的21号且为星期五的日子称为“脆弱日”。而“安全日”则是指非脆弱日。你的任务是:给定两个年份 $M$ 和 $N$,计算这两个年份之间(包括这两个年份)共有多少个安全日。 为了纪念玛雅文明,你需要用玛雅长历法的方式来表示安全日的总数。长历法不像西方的十进制,而是采用一种改进的二十进制计数方式。实际上,2012年12月21日只是玛雅历法进入下一个巴克顿的那一天。你不必追溯创世日,只需将答案用长历法表示即可。以下是一些例子和基数转换表: | 天数 | 长历位次 | 长历单位 | | --- | --- | --- | | 1 | 0 | 一基因 | | 20 | 1 | **一维纳尔** | | 360 | 2 | 一调恩 | | 7,200 | 3 | 一卡吞 | | 144,000 | 4 | 一巴克顿 | **转换说明**: 在这个问题中,你需要将安全日数转换为长历法。长历法中的数字通常用二十进制表示,除了维纳尔位用十八进制。下面的例子可以帮助你理解如何转换: - 如果安全日数为1454天,应输出 `0.0.4.0.14`。即:1*14 + 20*0 + 360*4 + 7200*0 + 144000*0 = 1454。 - 对于360天,输出 `0.0.1.0.0`。 - 对于20天,输出 `0.0.0.1.0`。 可以看到,所有位都是十进制表示,除了第一位(维纳尔),它是十八进制。

输入格式

第一行输入一个整数 $T$(0 < T < 500),表示测试用例的数量。接下来每行包含两个整数 $M$ 和 $N$(1901 ≤ $M, N$ ≤ 2300,且 $M \le N$)。如果 $M = N$,则只计算该年份的安全日。

输出格式

对于每个测试用例,输出一个用长历法表示的字符串:`a.b.c.d.e`(注意不需要引号),其中 0 ≤ a, b, c, e < 20,0 ≤ d < 18。

说明/提示

1. 1901年1月1日为星期二。 2. 所有日期计算使用目前世界通用的格里高利历。 3. 如果不清楚如何计算闰年,可查阅此链接: **示例**: **输入**: ``` 3 2011 2012 2012 2012 2000 2020 ``` **输出**: ``` 0.0.2.0.7 0.0.1.0.4 0.1.1.3.14 ``` **解释**: - 对于第一个测试用例,在2011年到2012年共有727个安全日,这可以表示为 `0.0.2.0.7`。 - 从2011年1月到2012年12月共有4个脆弱日,分别为2011年1月21日,2011年10月21日,2012年9月21日和2012年12月21日。 - 所有时间段共731天,因此安全日数为731减去4,等于727。 **本翻译由 AI 自动生成**