POJ1008:玛雅日历

news/2024/11/28 3:51:20/

一、Description

在这里插入图片描述

During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message, professor discovered that the Maya civilization used a 365 day long year, called Haab, which had 19 months. Each of the first 18 months was 20 days long, and the names of the months were pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu. Instead of having names, the days of the months were denoted by numbers starting from 0 to 19. The last month of Haab was called uayet and had 5 days denoted by numbers 0, 1, 2, 3, 4. The Maya believed that this month was unlucky, the court of justice was not in session, the trade stopped, people did not even sweep the floor.

For religious purposes, the Maya used another calendar in which the year was called Tzolkin (holly year). The year was divided into thirteen periods, each 20 days long. Each day was denoted by a pair consisting of a number and the name of the day. They used 20 names: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau and 13 numbers; both in cycles.

Notice that each day has an unambiguous description. For example, at the beginning of the year the days were described as follows:

1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, and again in the next period 8 imix, 9 ik, 10 akbal . . .

Years (both Haab and Tzolkin) were denoted by numbers 0, 1, : : : , where the number 0 was the beginning of the world. Thus, the first day was:

Haab: 0. pop 0

Tzolkin: 1 imix 0
Help professor M. A. Ya and write a program for him to convert the dates from the Haab calendar to the Tzolkin calendar.

二、Input

The date in Haab is given in the following format:
NumberOfTheDay. Month Year

The first line of the input file contains the number of the input dates in the file. The next n lines contain n dates in the Haab calendar format, each in separate line. The year is smaller then 5000.

三、Output

The date in Tzolkin should be in the following format:
Number NameOfTheDay Year

The first line of the output file contains the number of the output dates. In the next n lines, there are dates in the Tzolkin calendar format, in the order corresponding to the input dates.

四、Sample Input

3
10. zac 0
0. pop 0
10. zac 1995

五、Sample Output

3
3 chuen 0
1 imix 0
9 cimi 2801

六、Source

解法1

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;int main()
{ios::sync_with_stdio(false);string ha[] = { "pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet" };string tz[] = { "imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau" };int t;  cin >> t;   char doc;cout << t << endl;while(t--){int day, year;  string month;cin >> day >> doc >> month >> year;day ++;int sum_day = day + year * 365;for(int i = 0; i < 19; i++){if(ha[i] == month){sum_day += 20 * i;break;}}cout << sum_day % 13 << " " << tz[sum_day % 20] << " " << sum_day / 260 << endl;}return 0;
}
/*Haab历: 365天19个月, 用 19 个单词表示,开始的18月中有20天,用0 ~ 19表示 最后一个月只有5天,用 0 ~ 4 表示。月份:pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu, uayet天数:0 ~ 19, 0 ~ 4Tzolkin历:260天13个月, 用 1 ~ 13 表示, 每个月有20天, 用 20个单词 循环表示月份: 1 ~ 13天数: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau10.zac 0 ==> 3 chuen 010 * 20 + 11 == 211
*/

解法2

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;int main()
{ios::sync_with_stdio(false);string ha[] = { "pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet" };string tz[] = { "imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau" };int t;  cin >> t;   char doc;cout << t << endl;while(t--){int day, year;  string month;cin >> day >> doc >> month >> year;day ++;int sum_day = day + year * 365;for(int i = 0; i < 19; i++){if(ha[i] == month){sum_day += 20 * i;break;}}cout << sum_day % 13 << " " << tz[sum_day % 20] << " " << sum_day / 260 << endl;}return 0;
}
/*Haab历: 365天19个月, 用 19 个单词表示,开始的18月中有20天,用0 ~ 19表示 最后一个月只有5天,用 0 ~ 4 表示。月份:pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu, uayet天数:0 ~ 19, 0 ~ 4Tzolkin历:260天13个月, 用 1 ~ 13 表示, 每个月有20天, 用 20个单词 循环表示月份: 1 ~ 13天数: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau10.zac 0 ==> 3 chuen 010 * 20 + 11 == 211
*/

http://www.ppmy.cn/news/190620.html

相关文章

2965:玛雅历

解题思路 1.分别用数组模拟Haab和Tzolkin 2.把给的输入&#xff0c;转化成离世界开始有多少天 3.计算Tzolkin AC代码 //计算输入的日子离世界开始的天数 days //年*365 yue*20 day //计算年份 year days / 260 days - year*260 // 计算月份 前面的数字num1 num day…

NOI 1966 玛雅历

package One; /*** 07:玛雅历 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365…

玛雅人的密码

题目描述 玛雅人有一种密码&#xff0c;如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串&#xff0c;&#xff08;2<N<13&#xff09;该字符串中只含有0,1,2三种数字&#xff0c;问这个字符串要移位几次才能解开密码&#xff0c;每次只能移动相邻…

玛雅日历 1151

题目描述: 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这个Haab历法拥有19个月&#xff0c;在开始的18个月&#xff0c;…

玛雅游戏

Mayan puzzle 是最近流行起来的一个游戏。游戏界面是一个7 行5 列的棋盘&#xff0c;上面堆放着一些方块&#xff0c;方块不能悬空堆放&#xff0c;即方块必须放在最下面一行&#xff0c;或者放在其他方块之上。游戏通关是指在规定的步数内消除所有的方块&#xff0c;消除方块的…

POJ玛雅历

关键就是从0开始和从1开始的区别。 #include<iostream> #include<cstring> #include<string> #include<cmath> #include<map> #include<algorithm> using namespace std;map<string,int> MH{{"pop",0}, {"no",…

玛雅历

Description 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这个Haab历法拥有19个月&#xff0c;在开始的18个月&#xff…

玛雅历 —— C++

上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这个Haab历法拥有19个月&#xff0c;在开始的18个月&#xff0c;一个月有20…